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

2

还有哪个更好?

正如我在评论中所说,它们是两个不同的东西。苹果和橘子。。

SqlDataAdapter与 a 一起使用DataTableDataTable它可以用您的 SQL 中的表填充 a 。逐一SqlDataReader读取数据库行。

在你的情况下,我看不出有任何理由使用SqlDataReader,因为你想返回一个DataTable. 去吧SqlDataAdapter;)

..如果你可以使用 using 添加 SqlDataReader 的代码。

当然。但正如我所说,你不能使用DataTablewith SqlDataReader。但是,嘿.. 这是您如何获得价值的方法SqlDataReader;

SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    int firstcell = reader.GetInt32(0);    // I assume your first column is int.
    string secondcell = reader.GetString(1);  // I assume your second column is string.
    string thirdcell = reader.GetString(2); // I assume your third column is string.
    Console.WriteLine("FirstCell = {0}, SecondCell = {1}, ThirdCell = {2}", firstcell, secondcell , thirdcell);
}
于 2013-06-02T15:42:29.690 回答
1

如果您想循环每条记录并在循环内执行一些操作数据,但如果您想将数据放在数据集或数据表上,然后想将其绑定到 asp.net 控件(例如: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 回答