将“.01”插入数据库c#

时间:2013-08-12 13:25:07

标签: c# sql sql-server database visual-studio-2008

我想在c#中的sql数据库中将“0000.0000.0000.0001”插入到varchar(50)中。我一直收到这个错误:

解析查询时出错。 [令牌行号= 1,令牌行偏移= 122,令牌错误= .0000]

我的插入方式如下:

string version = "0000.0000.0000.0001";
 INSERT INTO [DBFileInfo] (DBFileInfoID,DatabaseType,Version, Description, CreationDate,ReleaseDate) 
values(1,1,"+version.ToString()+
",`Default Beverage DB created by DbGen`,
   CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";

表的初始构建是:

 string info = " CREATE TABLE [DBFileInfo]( [DBFileInfoID] INT NOT NULL,[DatabaseType] INT NOT NULL DEFAULT(-1),[Version] VARCHAR(50) NOT NULL, [Description] NVARCHAR(256) NOT NULL, [CreationDate] DATETIME,[ReleaseDate] DATETIME);";

有没有办法解决这个问题,所以我可以插入“。”进入它而没有例外?

谢谢!

2 个答案:

答案 0 :(得分:5)

您需要将字符串放在单引号中:

string version = "0000.0000.0000.0001";
...values(1,1,'" + version + "','...

<强>无论其

我强烈建议您改用参数。 e.g。

string version = "0000.0000.0000.0001";
string sql = @"INSERT INTO [DBFileInfo] (DBFileInfoID,DatabaseType,Version, Description, CreationDate,ReleaseDate) 
                VALUES(1,1,@Version,'Default Beverage DB created by DbGen',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP);";

using (var connection = new SqlConnection(yourConnectionString))
using (var command = new SqlCommand(sql, connection))
{
    command.Parameters.AddWithValue("@Version", version);
    connection.Open();
    command.ExecuteNonQuery();
}

答案 1 :(得分:1)

可能你错过了引号,试试:

... values(1,1,'"+version.ToString()+"','Default Beverage ..

虽然您可能正在使用参数

... values(1,1,@version,'Default Beverage ..

在这种情况下,您必须使用参数@version执行语句并将值传递给它。