バッチ 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"
2 番目のテーブル"Employee1"
、3 番目のテーブルが「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();