我是C#和.NET应用程序的新手。我与visual studio合作并拥有此表:
CREATE TABLE [dbo].[Table] (
[Id] INT NOT NULL,
[Meno] NVARCHAR (50) NULL,
[Datum] DATETIME NULL,
[Cas] INT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
现在我有一个简单的插入
public void NahrajSkore(string cas)
{
using (var con = new SqlConnection(cns))
{
con.Open();
var inset = new SqlCommand("Insert into Table values(@name,@date,@res)", con);
inset.Parameters.Add("@name", SqlDbType.VarChar);
inset.Parameters.Add("@date", SqlDbType.DateTime);
inset.Parameters.Add("@res", SqlDbType.Int);
inset.Parameters["@name"].Value = _hrac.MenoHraca;
inset.Parameters["@date"].Value = DateTime.Today;
inset.Parameters["@res"].Value = int.Parse(cas);
inset.ExecuteNonQuery();
}
}
BUt这个方法给我错误:
关键字“表格”
附近的语法不正确
我做错了什么?
答案 0 :(得分:4)
Table
是T-SQL中的reserved keyword。
您应该使用方括号,例如[Table]
如果已使用保留字,则可以避免出现错误消息 用括号(
[ ]
)围绕每个单词的出现。的然而, 最好的解决方案是将名称更改为非保留字。
您也可以将using
statement用于SqlCommand
,您可以在一行中定义和添加参数值,例如:
using (var con = new SqlConnection(cns))
{
using(var inset = new SqlCommand("Insert into [Table] values(@name,@date,@res)", con))
{
inset.Parameters.Add("@name", SqlDbType.VarChar).Value = hrac.MenoHraca;
inset.Parameters.Add("@date", SqlDbType.DateTime).Value = DateTime.Today;
inset.Parameters.Add("@res", SqlDbType.Int).Value = int.Parse(cas);
con.Open();
inset.ExecuteNonQuery();
}
}
始终建议在SqlCommand
中指定列名称,如<; p>
"Insert into [Table](NameColumn, DateColumn, ResColumn) values(@name,@date,@res)"
答案 1 :(得分:1)
我相信Table
是SQL中的保留字:)
尝试使用其他名称或使用[Table]
代替。
答案 2 :(得分:0)
请尝试使用表格的其他名称来解决此问题。
例如:
using(var inset = new SqlCommand("Insert into Student values(@name,@date,@res)", con))