从datagridview到SSCE的DML查询执行

时间:2013-02-16 14:33:06

标签: c# datagridview sql-server-ce dml

我要做的是:

使用SSCE和命令按钮将DML语句执行到数据库(Datagridview)。

问题:

我收到与此帖相同的错误:SQL [Error]: There was an error parsing the query. [ Token line number = 1,Token line offset = 44,Token in error = - ]

基于这些答案以及网络上提供的其他答案,我已经验证了查询字符串,但却无法解决。还有另外一个方面我怀疑。

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中的新行/更新/删除行插入数据库表。这是有效的方式吗?

对正确方向的一些见解表示赞赏。

1 个答案:

答案 0 :(得分:0)

我设法让它解决了。我不相信回答我自己的问题。刚刚添加了希望别人在将来参考的答案。

1)i变量指的是datagridview中的空行...因此要插入的值为空,并指定这些列NOT NULL ...

2)当ID列自动增加时,第一条规则是遵循通常的INSERT语句。所以我指定了要为其插入数据的列。

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