2

以下のコードを書きました。さらに改善できるかどうか知りたいです。

public static DataTable GetDepartments()
{
    DataTable dt = new DataTable();

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        using (SqlCommand command = new SqlCommand())
        {
            command.CommandText = "proc_GetDepartments";
            command.CommandType = CommandType.StoredProcedure;

            connection.Open();
            using (SqlDataAdapter da = new SqlDataAdapter(command))
            {
                command.Connection = connection;
                da.Fill(dt);
            }
        }
    }
    return dt;

}

ここでは SqlDataAdapter を使用しました。それを書く SqlDataReader の方法は何でしょうか。また、どちらが良いですか。ヘルプ/ガイダンスをいただければ幸いです。

4

2 に答える 2

1

各レコードをループし、ループ内でデータを操作したいが、データセットまたはデータテーブルにデータを配置してから asp.net コントロールにバインドしたい場合は、SqlDataReader を使用します (例: GridView、ComboBox、など) 次に、SqlDataAdapter を使用します。

とにかくSqlDataReaderを使用する方法は次のとおりです。

using System;
    using System.Data.SqlClient;

  class ConnectToSqlConnection {
    static void Main(string[] args)  {
      String sConn = "server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI";

        String sSQL = "select id, firstname, lastname from Employee";

      SqlConnection oConn = new SqlConnection(sConn);
      oConn.Open();

      SqlCommand oCmd = new SqlCommand(sSQL, oConn);
      SqlDataReader oReader = oCmd.ExecuteReader();

      int idxID = oReader.GetOrdinal("id");
      int idxFirstName = oReader.GetOrdinal("firstname");
      int idxLastName = oReader.GetOrdinal("lastname");

      while(oReader.Read()) {
        Console.WriteLine("{0} {1} {2}",
          oReader.GetValue(idxID),
          oReader.GetValue(idxFirstName),
          oReader.GetValue(idxLastName));
      }
    }
于 2013-06-02T15:36:43.400 に答える