【发布时间】:2017-10-28 07:21:35
【问题描述】:
我是C# 和SQL 的新手。
使用以下代码,我正在尝试创建新表,一切顺利,但问题是:使用textBox 如果我命名表以数字开头(123MytableName),则会引发错误,提示“语法不正确靠近 '123MytableName'"
using (SqlConnection MyConnection = new SqlConnection())
using (SqlCommand MySQLCommand = new SqlCommand())
{
MyConnection.ConnectionString = " Data Source=localhost; Initial Catalog=TestDB ;Integrated Security=true;Max Pool Size=1024; Pooling=true";
MyConnection.Open();
MySQLCommand.CommandText = "CREATE TABLE "+textBox1.Text+" (Col1 int, Col2 varchar(50), Col money)";
MySQLCommand.Connection = MyConnection;
MySQLCommand.ExecuteNonQuery();
}
我阅读了this,但没有帮助。
任何人都知道如何解决它,以便我可以创建以数字开头的表格?
谢谢
【问题讨论】:
-
直接在 SQL 代码中使用来自用户的输入而不进行任何类型的清理是确保安全漏洞大到足以让宽负载 18 轮车通过它们的可靠方法。 Think about Bobby Tables 每当您想做类似的事情时。
-
不能使用参数作为表名,所以最好研究一些其他方法来防止 SQL 注入。在彻底清理和验证用户输入之后,添加“TBL”之类的前缀就足够了。
-
您的下一个问题:“我不能命名我的表 SELECT”、“我不能有两个不同的表名为 ABC”、...
-
这样做(或其他坏事)“只是为了测试”的问题在于,它很容易变成习惯,坏习惯。最好从一开始就养成好习惯。
-
@user8074669,关于您问题的部分原因,SQL Server 遵循 ANSI 标准命名惯例。名称必须以字母开头,并且只能包含字母、下划线字符 (_) 和数字。
标签: c# sql sql-server ddl