0
    void Main()
    {
        string connString;
        connString = "Data Source=(local);Initial Catalog=Ochhi che guardano;Integrated Security=SSPI";


        String sqlString;
        try
        {
            SqlConnection conn = new SqlConnection(connString);
            conn.Open();
            sqlString = "SELECT Vare.varenavn";
            sqlString += " FROM vare";
            sqlString += " ORDER BY vare.varenavn";
            SqlCommand cmd = new SqlCommand(sqlString, conn);
            SqlDataReader reader =
            cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            if (reader.HasRows)
            {
                reader.Read();
                Console.WriteLine(reader.GetString(0));
            }
            reader.Close();
            conn.Close();
        }
        catch (System.Data.SqlClient.SqlException e)
        {
            Console.WriteLine(e.ToString());
        }
    }
}

}

私はこのデータベースを持っています。ここには、テキストファイルに印刷して保存する必要のある商品のリストと、聞いたドライブがあります。(vare =商品)。しかし、このコードを実行すると、エラーが発生します。私の質問は、このコードで何が間違っているのか、そしてリストを.txtファイルに保存する方法です。C#でファイルがどのように処理されるかは知っていますが、データベースと統合する方法はわかりません。

4

1 に答える 1

1

複数の行が戻ってきていると思われますが、現在は1行しか表示できません。これは、リーダーを反復処理していないためです。ifブロックの代わりに次を試してください。

while (reader.Read())
{
    Console.WriteLine(reader.GetString(0));
}

データをテキストファイルに保存する場合は、返された各文字列をリストに保存してから、そのリストをテキストファイルに書き込むことができます。したがって、コードは次のようになります。

try
{
    SqlConnection conn = new SqlConnection(connString);
    conn.Open();
    sqlString = "SELECT Vare.varenavn";
    sqlString += " FROM vare";
    sqlString += " ORDER BY vare.varenavn";
    SqlCommand cmd = new SqlCommand(sqlString, conn);
    SqlDataReader reader =
    cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    List<string> strList = new List<string>();
    while (reader.Read())
    {
        string temp = reader.GetString(0);
        strList.Add(temp);
        Console.WriteLine(reader.GetString(0));
    }
    reader.Close();
    conn.Close();
   //code to write list to text file
   File.WriteAllLines(Application.StartupPath + "\\text.txt", strList.ToArray());
}
catch (System.Data.SqlClient.SqlException e)
{
    Console.WriteLine(e.ToString());
}
于 2012-12-12T09:57:28.887 に答える