|
上記を参考にコーティングしてみたところ、DataGridに1件だけある場合はINSERTに成功するのですが 2件以上あるときにINSERTしようとするとシステムエラーがおきてしまいます。なぜでしょう?
private System.Windows.Forms.DataGrid dataGrid1 = new DataGrid(); DataSet ds = new DataSet("出荷明細"); DataTable dt;
public Form1() { InitializeComponent(); dt = ds.Tables.Add("出荷明細"); dt.Columns.Add("明細",typeof(int)); dt.Columns.Add("分類名",typeof(string)); dt.Columns.Add("商品コード",typeof(int)); dt.Columns.Add("商品名",typeof(string)); dt.Columns.Add("単価",typeof(int)); dt.Columns.Add("数量",typeof(int)); dt.Columns.Add("金額",typeof(int)); dataGrid1.DataSource = ds.Tables["出荷明細"]; }
//追加 private static ArrayList list = new ArrayList();
private void botton1_Click(object sender, System.EventArgs e) { DataRow dr; dr = dt.NewRow(); dr["明細"] = textBox1; dr["分類名"] = textBox2; dr["商品コード"] = Convert.ToInt32(textBox3); dr["商品名"] = textBox4; dr["単価"] = textBox5; dr["数量"] = Convert.ToInt32(textBox6); dr["金額"] = Convert.ToInt32(textBox7); dt.Rows.Add(dr); //以下追加 //商品名なども数字なのでINT型にしました。
int[] i = new int[7]; int[0] = Convert.ToInt32(textBox1); int[1] = Convert.ToInt32(textBox2); int[2] = Convert.ToInt32(textBox3); int[3] = Convert.ToInt32(textBox4); int[4] = Convert.ToInt32(textBox5); int[5] = Convert.ToInt32(textBox6); int[6] = Convert.ToInt32(textBox7); list.Add(i);
}
private void botton2_Click(object sender, System.EventArgs e) { for(int ii=0; ii<list.Count;ii++) { int[] i = (int[])list[ii]
OracleConnection OC = new OracleConnection(); string strSQL = "INSERT INTO SHIPMENT_DETAIL VALUES" + "('" + i[0] + "','" + i[1] + "','" + i[2] + "','" + i[3] + "','" + i[4] + "','" + i[5] + "','" + i[6] + "','" + i[7] + "')";
OC.ConnectionString = "user id=sctto;" + "password=tiger;" + "Data Source = test";
OracleCommand ORACmd = new OracleCommand(strSQL,OC); OC.Open();
ORACmd.ExecuteNonQuery();
OC.Close(); } }
上記のように現在コーティングしています。
|