C# 如何修复在SQL Server中创建表时发生的此语法错误
我试图在SQL Server数据库中创建一个表,但遇到语法错误C# 如何修复在SQL Server中创建表时发生的此语法错误,c#,sql,sql-server,visual-studio-2010,C#,Sql,Sql Server,Visual Studio 2010,我试图在SQL Server数据库中创建一个表,但遇到语法错误 String quary1 = "CREATE TABLE " +chatTable + "(" +"From varchar(255)," +"To varchar(255)," +"Message varchar(255))"; SqlCommand cmd1 = new SqlCommand(qu
String quary1 = "CREATE TABLE " +chatTable +
"("
+"From varchar(255),"
+"To varchar(255),"
+"Message varchar(255))";
SqlCommand cmd1 = new SqlCommand(quary1, con);
cmd1.ExecuteNonQuery();
它给出了一个错误消息
来自附近的语法错误
如果你给我一个提示,我会给出一个解决方案。谢谢你。将其替换为[From]
如果您可以将列重命名为更具描述性的名称,如FromAddress
等,则效果更好
对
TO
也要这样做,因为它也是一个保留字。FROM
和TO
在T-SQL中是一个保留字。将它们与方括号一起使用,如[FROM]
和[TO]
一般建议使用不同的列名,而不是;)代码>解决方案:
String quary1 = "CREATE TABLE " +chatTable +
"("
+"[From] varchar(255),"
+"[To] varchar(255),"
+"[Message] varchar(255))";
SqlCommand cmd1 = new SqlCommand(quary1, con);
cmd1.ExecuteNonQuery();
由于FROM和TO是保留字,您需要这样更改查询
String quary1 = "CREATE TABLE " +chatTable +
"("
+"chatFrom varchar(255),"
+"chatTo varchar(255),"
+"Message varchar(255))";
要查看所有保留字的完整列表,请参阅此链接
您使用的是什么DBMS?From
是一个T-SQL关键字-不要将其用于列名!(同样适用于到)-使用更具表现力的东西!感谢它的工作@marc_sI会把我的列名改成像“messageFrom”、“messageTo”和“messageBody”之类的东西呃,这是一个糟糕的设计。为什么你认为每次聊天都需要一张桌子,而不是一张用ChatID键控的桌子?