在C#中尝试INSERT INTO .accdb获取“查询表达式中的语法错误(缺少运算符)”

时间:2012-12-07 16:43:45

标签: c# database ms-access-2010

所以我有下面的代码,点击“button3”后,我应该将dataGridView的内容插入到我的数据库中。我收到了错误:

“查询表达式”中的语法错误(缺少运算符),单引号中我的第一列的第一个值,就像它读取数据一样,但无法分辨出什么当我单击“确定”关闭消息时,弹出另一条消息,同一列的第二个值现在用单引号;依此类推,直到达到最后一个值,然后最后,弹出错误框:

“INSERT INTO语句中的语法错误”

我计划在我开始工作之后对代码进行参数化;所以不用担心。 : - )

请帮助!!!!感谢所有帮助。

private void button3_Click(object sender, EventArgs e)

        {

            string ConnString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Search\\Database.accdb"; //Persist Security Info=True";
            for(int i=0; i< dataGridView1.Rows.Count;i++)
                {
                string StrQuery = "INSERT INTO script_Orders (" + "script, " + "cust_Name) VALUES (" + dataGridView1.Rows[i].Cells["Prescription"].Value + ", " + dataGridView1.Rows[i].Cells["Customer_Name"].Value + ");";
                try
                    {
                        using (OleDbConnection conn = new OleDbConnection (ConnString))
                            {
                            using (OleDbCommand comm = new OleDbCommand(StrQuery, conn))
                                {
                                conn.Open();
                                comm.ExecuteNonQuery();
                                conn.Close();
                                }
                            }
                    }
                catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
        }

1 个答案:

答案 0 :(得分:2)

试试这个

string StrQuery = String.Format("INSERT INTO script_Orders(script,cust_Name) VALUES ('{0}','{1}')", dataGridView1.Rows[i].Cells["Prescription"].Value,  dataGridView1.Rows[i].Cells["Customer_Name"].Value);