1

データベースにはいくつかの既存のデータがあり、ユーザーはデータベースに追加したいdatagridviewに新しいデータを入力します。

そして、datagridviewに新しく挿入されたデータの行だけをデータベースに追加する方法が本当にわかりません。新しく挿入されたデータのみを取得するにはどうすればよいですか?tempIDを使用して、新しく挿入された行に割り当てることができると言われましたが、その方法がわかりません。誰かが私にそれへのリンクを教えてもらえますか?

これは今のところ私のコードです:

private void button1_Click(object sender, EventArgs e)
{
    con = new System.Data.SqlClient.SqlConnection();
    con.ConnectionString = "Data Source=tcp:SHEN-PC,49172\\SQLEXPRESS;Initial Catalog=LSEStock;Integrated Security=True";
    con.Open();
    SqlDataAdapter da = new SqlDataAdapter();

    for (int i = 0; i<dataGridView1.Rows.Count-2; i++ )
    {

        String insertData = "INSERT INTO CostList(SupplierName, CostPrice, PartsID) VALUES (@SupplierName, @CostPrice, @PartsID)" ;
        SqlCommand cmd = new SqlCommand(insertData, con);
        cmd.Parameters.AddWithValue("@SupplierName", dataGridView1.Rows[i].Cells[0].Value);
        cmd.Parameters.AddWithValue("@CostPrice", dataGridView1.Rows[i].Cells[1].Value);
        cmd.Parameters.AddWithValue("@PartsID", textBox1.Text);
        da.InsertCommand = cmd;
        cmd.ExecuteNonQuery();
    }

    con.Close();
}
4

1 に答える 1

1

データグリッドの挿入に別の方法でアプローチする必要があると思います。これをチェックしてください:

http://www.codeguru.com/csharp/.net/net_data/datagrid/article.php/c13041/Add-Edit-and-Delete-in-DataGridView.htm

データバインドがあるときにグリッドがユーザーに新しい行をデータベースに挿入させることができる場合、ローカル作業を許可してからすべての新しい行を挿入することがここでの最良のアプローチだとは思いません。この例では、UI を解放するために非同期でデータベース呼び出しを行います。

また、クエリには少なくとも StringBuilder を使用する必要があると思います。より管理しやすく、接続文字列をそのままにしておかないことを願っています。

于 2012-08-13T05:08:19.873 に答える