2014-09-05 49 views
-2

我试图通过执行插入查询在SQL表中插入数据。使用控件的列名在sqlserver中插入数据。 c#

问题是我需要从选定的gridview行中的单元格获取列名称。

这里的片段:

SqlCommand cmd30 = new SqlCommand("insert into mytable ('"+GridView7.SelectedRow.Cells[0].Text+"' , r_id) values ('"+ GridView7.SelectedRow.Cells[1].Text +"', '"+TextBox1.Text+"')",con30); 
cmd30.ExecuteNonQuery(); 

R_ID是不是主键。

错误是:

Incorrect syntax near 'r_id'.

任何帮助将不胜感激。 谢谢。

+1

使用'的SqlCommand Parameters'来解决这个问题。 – Hassan 2014-09-05 05:57:24

+3

COnsidered - 啊 - 看你生成的SQL,然后修复该错误? (a)读取错误而不是复制/粘贴错误(b)查看您生成的sql时,这是一个明显的错误。调试器可以提供哪些帮助。 – TomTom 2014-09-05 06:04:43

+0

@EdiG。这是参数不工作的情况之一,因为参数不能包含对象名称。 – TomTom 2014-09-05 06:05:14

回答

2
  1. 使用SqlCommand Parameters
  2. 另外,还要确保你从GridView7.SelectedRow.Cells[0].Text;

代码得到有效的列名:

string col1 = GridView7.SelectedRow.Cells[0].Text; 
string sql = "INSERT into mytable (" + col1 + ", r_id) Values (@" + col1 + ", @rid)"; 
SqlCommand cmd30 = new SqlCommand(sql, con30); 
cmd30.Parameters.AddWithValue("@" + col1, GridView7.SelectedRow.Cells[1].Text); 
cmd30.Parameters.AddWithValue("@rid", TextBox1.Text);  
cmd30.ExecuteNonQuery(); 
+0

嗨,感谢您的回复。该代码段显示错误 - “cmd30.Parameters.AddWithValue(@r_id,TextBox1.Text);”在@r_id – user3527503 2014-09-05 09:49:07

+0

我已经更新了答案,但是能否告诉你什么错误? – Hassan 2014-09-05 11:30:00

+0

它在最后一行的@rid下面显示一条红线。错误是:“名称rid在当前上下文中不存在”。 – user3527503 2014-09-05 16:24:24

相关问题