2017-04-03 93 views
0

我已经一次又一次的检查,但找不到任何错误System.Data.SqlClient.SqlException:TABLE_NAME '“附近有语法错误'

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(); 
+0

你看到没有足够的信息开始调查这个问题。我可以告诉你的是你无法连接到你的数据库表。也许你的连接字符串是错误的或表名? – Valkyrie

+1

根据数据库系统的不同,要使用不同的引号字符来包含名称。例如,Sql Server使用方括号[tablename],而MySql使用反引号' – Steve

+0

“+ tbpg.Text +”删除单个qouts –

回答

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 + 
         ");"; 
0

有了这样大量的字符串连接,您需要在调试过程中输出查询的最终值。否则,你基本上在猜测它的外观。

我也注意到了这一行业的区别:

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

您使用我,而不是0

但一般通过构建字符串connaction查询是不是一个好主意。你应该使用Parametized Queries。否则,你最终在这个笑话的反面: https://xkcd.com/327/