C# 如何修复在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

我试图在SQL Server数据库中创建一个表,但遇到语法错误

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

由于FROMTO是保留字,您需要这样更改查询

String quary1 = "CREATE TABLE " +chatTable + 
                "("
                +"chatFrom varchar(255),"
                +"chatTo varchar(255),"
                +"Message varchar(255))";
要查看所有保留字的完整列表,请参阅此链接


您使用的是什么DBMS?
From
是一个T-SQL关键字-不要将其用于列名!(同样适用于
)-使用更具表现力的东西!感谢它的工作@marc_sI会把我的列名改成像“messageFrom”、“messageTo”和“messageBody”之类的东西呃,这是一个糟糕的设计。为什么你认为每次聊天都需要一张桌子,而不是一张用ChatID键控的桌子?