我想在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);";
有没有办法解决这个问题,所以我可以插入“。”进入它而没有例外?
谢谢!
答案 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
执行语句并将值传递给它。