System.Data.SqlClient.SqlException:'table_Name'附近的语法不正确

时间:2017-04-03 09:43:29

标签: c# sql .net datagridview

我一次又一次地检查,但找不到任何错误

private void Btn_Save_Click(object sender, EventArgs e)
    {

        SqlConnection c = new SqlConnection(conn);


                c.Open();
                for (int i = 0; i < dgv.Rows.Count; i++)
                {
                    query = @"INSERT INTO '" + tbpg.Text + "' VALUES ("
                        + dgv.Rows[0].Cells["Sno"].Value + ", "
                        + dgv.Rows[i].Cells["Date"].Value + ","
                        + dgv.Rows[0].Cells["Particulars"].Value + ", "
                        + dgv.Rows[0].Cells["Credit"].Value + ", "
                        + dgv.Rows[0].Cells["Debit"].Value + ","
                        + dgv.Rows[0].Cells["Balance"].Value +
                        ");";

                }
        SqlCommand cmd = new SqlCommand(query,c);
        cmd.ExecuteNonQuery();

2 个答案:

答案 0 :(得分:0)

尝试以下代码

query = @"INSERT INTO " + tbpg.Text + "  VALUES ("
                        + dgv.Rows[0].Cells["Sno"].Value + ", "
                        + dgv.Rows[i].Cells["Date"].Value + ","
                        + dgv.Rows[0].Cells["Particulars"].Value + ", "
                        + dgv.Rows[0].Cells["Credit"].Value + ", "
                        + dgv.Rows[0].Cells["Debit"].Value + ","
                        + dgv.Rows[0].Cells["Balance"].Value +
                        ");";

答案 1 :(得分:0)

如此大量的字符串连接,您需要在调试期间输出查询的最终值。否则你基本上猜测它的样子。

我注意到这一行有所不同:

+ dgv.Rows[i].Cells["Date"].Value + ","

你正在使用i,而不是0。

但通常通过字符串连接构建查询并不是一个好主意。你应该使用Parametized Queries。否则你最终会在这个笑话的错误方面: https://xkcd.com/327/