你有一个合理的想法的权利,直到你得到的地步您正尝试创建第二个SqlCommand。也就是,一旦你做了填充,你已经有了一个表中的数据。你不会运行另一个选择 - 你已经做到了。您只需引用要在数据集中使用的表格。
如果你想有一个数据表,你会做这样的事情(为VB,见下文):
SqlDataAdapter myAdapter = new SqlDataAdapter(CommandText, con);
DataSet myDataset = new DataSet();
myAdapter.Fill(myDataset, "Table"); // "Table" is just a name, it can be anything.
mydatatable1 = myDataset.Tables[0]; // Get the table
现在,如果你不需要一个DataTable本身,而只是想读从查询,你会使用SqlDataReader:
cmd = new SqlCommand(CommandText, con);
// One or more params
cmd.Parameters.AddWithValue("@paramName", Value);
SqlDataReader nwReader = cmd.ExecuteReader();
然后,只需从阅读nwReader:
while (nwReader.Read())
{
string field1Val = (string)nwReader["FieldName"];
etc...
}
更新:我不知道VB,但这里是我认为它会是什么样子:
cmd = New SqlCommand("Select * from table1", con)
ada = New SqlDataAdapter(cmd)
ds = New DataSet
ada.Fill(ds)
mydatatable1 = ds.Tables(0);
您可能能够缩短这种摆脱额外的SqlCommand(假设VB支持像C#这样的SqlDataAdapater语法。
ada = New SqlDataAdapter("Select * from table1", con)
ds = New DataSet
ada.Fill(ds)
mydatatable1 = ds.Tables(0);
好运...
@Gopal - 你是否试图用mydatatable1合并ds.Tables(0)(来自第一个select语句的数据表)?我不知道变量dr3是什么... – dugas 2010-02-16 13:03:00
@thedugas - 我认为它比那更基本。我认为他只是想从DataTable格式的table1中获取数据,但并没有意识到填充已经完成了。 – 2010-02-16 13:08:23
@Mark Brittingham - Gotcha ... – dugas 2010-02-16 13:15:43