0

私がやろうとしていること:

コマンド ボタンと コマンド ボタンを使用して、 DML ステートメントをデータベース ( SSCE)に実行しDatagridviewます。

問題:

この投稿とまったく同じエラーが発生しています: SQL [エラー]: クエリの解析中にエラーが発生しました。[ トークン ライン番号 = 1、トークン ライン オフセット = 44、トークン エラー = - ]

これらの回答とウェブで入手可能な他の回答に基づいて、クエリ文字列を検証しましたが、解決できませんでした。私が疑問に思っているもう1つの側面もあります。

private void button2_Click(object sender, EventArgs e)
        {
            using (SqlCeConnection CONN = new SqlCeConnection("Data 
                                          Source=LocalDBSSCompactEdition.sdf;"))
            {
                SqlCeCommand comm = new SqlCeCommand();
                comm.Connection = CONN;
                CONN.Open();
                int i = dataGridView2.Rows.Count-1;

                    String queryString = @"INSERT INTO tblEmployee VALUES ("
                    + dataGridView2.Rows[i].Cells["E_ID"].Value + ", "
                    + dataGridView2.Rows[i].Cells["FirstName"].Value + ", "
                    + dataGridView2.Rows[i].Cells["LastName"].Value + ", "
                    + dataGridView2.Rows[i].Cells["DeptID"].Value + ");";
                    comm.CommandText = queryString;
                    comm.ExecuteNonQuery();

            }
        }

1)E_ID列はIDENTITY(自動インクリメント) です。ただし、データベース テーブルと一致するように DataGridview にすべての列を含める必要があるというエラーが表示されました。これは私が得ている問題でしょうか、それとも私の構文でしょうか?

2) ボタン クリック イベントを使用して、新しい行/更新/削除された行を Datagridview からデータベース テーブルに挿入したいと考えています。これは効率的な方法ですか?

正しい方向へのいくつかの洞察は高く評価されます。

4

1 に答える 1

0

私はそれを解決することができました。私は自分自身の質問に答えることを信じていません。将来誰かの参考になることを期待して、答えを追加しました。

1)i変数が空の行を参照していたdatagridview...したがって、挿入される値は null であり、これらの列が指定されていますNOT NULL...

INSERT2) 最初のルールは、ID 列が自動インクリメントの場合の通常のステートメントに従うことでした。そこで、データを挿入する列を指定します。

3) 入力していたデータは、 として扱われるように引用されていませんでしたString。修理済み。

private void button2_Click(object sender, EventArgs e)
        {
            using (SqlCeConnection CONN = new SqlCeConnection("Data Source=LocalDBSSCompactEdition.sdf;"))
            {
                CONN.Open();
                SqlCeCommand comm = CONN.CreateCommand();                
                int i = dataGridView2.Rows.Count-1;

                    String queryString = @"INSERT INTO tblEmployee (FirstName, LastName, DeptID) VALUES ('"                    
                    + dataGridView2.Rows[5].Cells["FirstName"].Value + "','"
                    + dataGridView2.Rows[5].Cells["LastName"].Value + "',"
                     + dataGridView2.Rows[5].Cells["DeptID"].Value + ");";
                    comm.CommandText = queryString;
                    comm.ExecuteNonQuery();
                    CONN.Close();    
            }
        }
于 2013-02-16T14:54:04.180 に答える