C#插入语句

时间:2014-11-14 09:31:05

标签: c# sql sql-server sql-insert

我是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这个方法给我错误:

  

关键字“表格”

附近的语法不正确

我做错了什么?

3 个答案:

答案 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))