0

名前と価格の2つの列があります。datagridview に表示されるデータベース テーブルに既にいくつかのデータがあると仮定します。これで、ユーザーが新しいデータ行を入力して (行数に関係なく)、[保存] ボタンをクリックすると、すべての新しいデータ行がデータベースに保存されます。

問題は、新しいデータ行のみを取得するにはどうすればよいかということです。または、名前が存在するかどうかを確認し、価格が同じかどうかを確認し、価格が異なる場合は挿入しないで、価格を更新するにはどうすればよいですか。

これが私のコードです:

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; 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();

EDIT : 上記のコードは、datagridview 内のすべてのデータをデータベースに追加し、複製を続けます。

ご清聴ありがとうございました。

4

2 に答える 2

1

1つの方法は、SQLテーブル内のすべてのデータを削除してから、グリッドビューにあるデータを挿入することです。

この問題を回避する別の方法は、グリッドビューでtempidという名前の列を作成し、挿入されるすべての新しい行に値-1を割り当て、保存時にtempid=-1の行のみを取得してSQLテーブルに挿入することです。 。

于 2012-08-10T06:45:59.120 に答える
0

データをデータセットとデータテーブルにロードします。もう 1 つのデータ テーブル (メイン データ) オブジェクト。

データグリッドに行を挿入してクリックして保存した後、新しいデータをメインデータで確認します。

于 2012-08-10T06:25:27.617 に答える