C# 如何在使用SqlDataAdapter填充datagridview时添加列

C# 如何在使用SqlDataAdapter填充datagridview时添加列,c#,sql,datagridview,sqldataadapter,C#,Sql,Datagridview,Sqldataadapter,我正在使用SQL填充我的datagridview。我是这样做的: string cn = ConfigurationManager.ConnectionStrings["Scratchpad"].ConnectionString; SqlConnection myConnection = new SqlConnection(cn); string sql = "some text here"; SqlDataAdapter dataadapter = new SqlDataAdapter(sq

我正在使用SQL填充我的datagridview。我是这样做的:

string cn = ConfigurationManager.ConnectionStrings["Scratchpad"].ConnectionString;
SqlConnection myConnection = new SqlConnection(cn);

string sql = "some text here";
SqlDataAdapter dataadapter = new SqlDataAdapter(sql, myConnection);
DataSet ds = new DataSet();
myConnection.Open();
dataadapter.Fill(ds, "Authors_table");
myConnection.Close();
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Authors_table";
现在它删除旧的datagridview并粘贴选择。但我只想将数据添加到现有数据右侧的列中


提前感谢

试试这个。我一次运行了多个查询

SqlDataAdapter adapter = new SqlDataAdapter(
  "SELECT * FROM Customers; SELECT * FROM Orders", connection);
adapter.TableMappings.Add("Table", "Customer");
adapter.TableMappings.Add("Table1", "Order");

adapter.Fill(ds);

这一要求听起来似乎可以通过在
SqlDataAdapter
中使用的查询中的SQL
内部联接来满足。如果您能够通过匹配键将两个数据源连接在一起,只需将数据向下拉一次即可。但我想这对你不起作用是有原因的

事实上,您可以使用
数据集执行所需操作,但还需要执行以下步骤:

string sql = "The first query"
SqlDataAdapter dataadapter = new SqlDataAdapter(sql, myConnection);
DataSet ds = new DataSet();
myConnection.Open();
dataadapter.Fill(ds, "Authors_table");
myConnection.Close();

// I don't know what your primary key is, but you need to have one.
// I am assuming it's called "author_id".

DataColumn authorIdColumn = ds.Tables["Authors_table"].Columns["author_id"];
ds.Tables["Authors_table"].PrimaryKey = new[] { authorIdColumn };

// Get your second set of data
sql = "My second query, which also has the same primary key, but has more columns"
dataadapter = new SqlDataAdapter(sql, myConnection);
dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
DataSet ds2 = ds.Clone();

myConnection.Open();
dataadapter.Fill(ds2, "Authors_table");
myConnection.Close();

// Now we use the DataSet.Merge method, which is very powerful. 
ds.Merge(ds2, false, MissingSchemaAction.AddWithKey);

dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Authors_table";

你可能需要做很多实验:这只是大纲。如果不知道您的数据以及您目前所做的工作,就很难知道您可能还需要调用哪些设置或方法

您的问题是如何使DataGridView反映您在
数据集中的数据,还是如何使
数据集
具有您想要的数据?听起来好像您想在数据集中填充一个数据表,然后在数据表的附加列中添加附加数据,匹配记录ID,以便每一行在新列中获得适当的数据值。这是对的吗?@AnnL。这的确是正确的,先生,你能解决你的问题吗?