0

我正在尝试做的事情:

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

问题:

我收到与这篇文章完全相同的错误:SQL [错误]:解析查询时出错。[令牌行号= 1,令牌行偏移量= 44,错误令牌= - ]

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

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 回答