c#如果我只需要一个表,我应该使用DataSet还是DataTable?

时间:2010-11-05 15:15:44

标签: c# .net data-binding

这是我的代码。

public DataSet ConnectandReadList()
{
    DataSet ds = new DataSet();

    string connection_string="Data Source=hermes;database=qcvalues; Integrated Security=SSPI;";            

    using (var myConnection = new SqlConnection(connection_string))
    {

        myConnection.Open();
        var command = new SqlCommand(InitializeQuery(), myConnection);
        var adapter = new SqlDataAdapter(command);

        adapter.Fill(ds);
    }

    return ds;

}
然后我以这种方式设置数据源:

dataGridView1.DataSource = ds.Tables[0];

问题是我应该返回数据集还是数据表?如果我要返回数据表,我的代码将如何改变?

4 个答案:

答案 0 :(得分:2)

我只是在你的情况下返回一个DataTable。而且代码越正确

using (var command = new SqlCommand(InitializeQuery(), myConnection))
using (var adapter = new SqlDataAdapter(command))
    adapter.Fill(ds);

答案 1 :(得分:1)

将单词DataSet更改为DataTable并重新编译。使用此方法的结果时会出现错误,但您只需将dataGridView1.DataSource = ds.Tables[0];更改为dataGridView1.DataSource = ds;

答案 2 :(得分:1)

只需将所有DataSet替换为DataTable(为了便于阅读,所有ds改为resultTable) - 或者我是否遗漏了任何内容?

答案 3 :(得分:0)

http://imar.spaanjaars.com/406/filling-a-datatable-or-dataset-the-quick-way

private DataTable GetDataTable()
{
  string sql = "SELECT Id, Description FROM MyTable";
  using (SqlConnection myConnection = new SqlConnection(connectionString))
  {
    using (SqlCommand myCommand = new SqlCommand(sql, myConnection))
    {
      myConnection.Open();
      using (SqlDataReader myReader = myCommand.ExecuteReader())
      {
        DataTable myTable = new DataTable();
        myTable.Load(myReader);
        myConnection.Close();
        return myTable;
      }
    }
  }
}