代码之家  ›  专栏  ›  技术社区  ›  Alex Gordon

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

  •  1
  • Alex Gordon  · 技术社区  · 14 年前

    这是我的密码。

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

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

    4 回复  |  直到 14 年前
        1
  •  2
  •   Gabriel Magana    14 年前

    在你的情况下我只是返回一个数据表。更正确的代码是

    using (var command = new SqlCommand(InitializeQuery(), myConnection))
    using (var adapter = new SqlDataAdapter(command))
        adapter.Fill(ds);
    
        2
  •  1
  •   cjk    14 年前

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

        3
  •  1
  •   chiccodoro    14 年前

    把你所有的 DataSet 通过 DataTable ds 通过 resultTable

        4
  •  0
  •   ryan    14 年前

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