我的问题通常是在将数据插入表格时通过代码编写以下内容
insert into tblname values('"+txt.text+"','"+txt1.text+"');
当我们传递数据时,文本框就像是可以插入到表中而不使用表名直接
答案 0 :(得分:2)
您显然需要知道要插入的表,因此必须为INSERT语句标识一个表名。选项包括:
您还应该了解示例中的SQL注入风险 - 避免将值直接连接到要执行的SQL字符串中。而是参数化SQL。
如果需要在运行时动态指定要插入的表,则必须将表名连接到随后执行的SQL语句中。但是,要非常警惕SQL注入 - 确保完全验证表名以确保其中没有任何恶意内容。您甚至可以通过在sys.tables中检查它来检查它是否真实。
答案 1 :(得分:1)
没有桌子名称就不可能。
但是如果你用适当的表填充它,你可以使用Linq To SQL(即任何ORM)或DataAdapter.Update ....
答案 2 :(得分:1)
没有表名,你不能这样做,不。但是,更大的问题是您的代码 可怕 是危险的,并且在SQL注入时也是如此。您应立即立即修复此,立即。即使对于内部应用程序,注入也是最大的风险。更好的代码是:
insert into tblname (Foo, Bar) values(@foo, @bar)
将参数@foo
和@bar
添加到您的命令中(显然,替换为合理的名称)。
在您提出之前:不,表名 不能 参数化;你不能使用
insert into @tblname -- blah
在任何查询或操作中,表名都是(/是)基础。
答案 3 :(得分:0)
我想如果有可能你必须使用参数。
Here你有一个小例子。