如果使用批处理 SQL 语句检索多个表并填充 DataSet,则第一个表将使用为 Fill 方法指定的表名命名。随后的表使用为 Fill 方法指定的名称加上一个从 1 开始并以 1 递增的数字命名。例如,如果您要运行以下代码:MSDN
所以代码将是
adap = new SqlDataAdapter("SELECT * FROM Employee; Select * from Shift; select * from Has_Shift", mycon);
// second table name will be Employee +1
adap.TableMappings.Add("Employee1", "Shift");
// second table name will be Employee +2
adap.TableMappings.Add("Employee2", "Has_Shift");
// give Table name as below
adap.Fill(ds, "Employee");
DataRow newRow = ds.Tables["Employee"].NewRow();
newRow["Name"] = textBox1.Text;
ds.Tables["Employee"].Rows.Add(newRow);
adap.Update(ds);
mycon.Close();
因为这里我们"Employee"
在 Fill 方法中给出了表名,所以第一个表是"Employee"
,第二个是"Employee1"
,第三个是“Employee2”
由于您没有给出任何表名,因此您的表名将是“Table”、“Table1”、“Table2”......您可以将它们映射到正确的名称
adap.TableMappings.Add("Table", "Employee");
adap.TableMappings.Add("Table1", "Shift");
adap.TableMappings.Add("Table2", "Has_Shift");
其余代码将是
adap.Fill(ds);
DataRow newRow = ds.Tables["Employee"].NewRow();
newRow["Name"] = textBox1.Text;
ds.Tables["Employee"].Rows.Add(newRow);
adap.Update(ds);
mycon.Close();