2010-11-05 73 views
1

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

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]; 

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

+2

确保你在'using'语句中包装'command'和'adapter'作为一些答案。 – 2010-11-05 15:36:40

回答

2

我刚刚在您的情况下返回一个DataTable。而更多的正确的代码是

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

将单词DataSet更改为DataTable并重新编译。你会得到一个错误消耗这种方法的结果,但你只需要更改dataGridView1.DataSource = ds.Tables[0];dataGridView1.DataSource = ds;

+1

当你在它的时候,把ds改为更有意义的东西......就像表的实际名称一样。 DataTable customersTable或类似的东西。 – Dismissile 2010-11-05 15:26:37

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; 
     } 
    } 
    } 
} 
1

只需更换所有DataSet通过DataTable(和可读性,所有ds通过resultTable) - 或者我错过了什么?

相关问题