-1

我正在尝试将“0000.0000.0000.0001”插入到 c# 中我的 sql 数据库中的 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);";

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

谢谢!

4

2 回答 2

5

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

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

然而

我强烈建议您改用参数。例如

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();
}
于 2013-08-12T13:33:39.893 回答
1

可能您错过了引号,请尝试:

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

虽然您可能正在使用参数

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

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

于 2013-08-12T13:29:10.627 回答