我正在尝试使用以下查询插入或替换到 SQLite 数据库中:
INSERT OR REPLACE INTO VersionNumbers
(VersionNumberID,
ENVID,
EnvShortName,
VersionNumber,
BuildNumber,
SourceGetVersion,
DeploymentDate,
CreatedDateTime,
ModifiedDateTime,
Deleted,
LastGetFromServerDateTime)
Values
('da8e3589-4511-4300-a081-ff57998be949',
'd2303c80-ce8e-4a66-98ca-009b5073e967',
'Environment A',
'16.3.1610.2708',
'BuildNumber_20161027.2',
'C99633',
'2016-10-31',
'10/10/2016 12:35:41',
'14/11/2016 10:55:15',
'0',
'14/11/2016 15:21:05')
我已经使用 DB Browser for SQLite 对此进行了测试,并直接在数据库上执行 SQL,这一切都很好,但是如果我通过 C# 传递相同的查询,我会收到错误“关键字‘OR’附近的语法不正确”。
C#
dbConnection.ConnectionString = DataDbConnString;
dbConnection.Open();
foreach (DataRow dataRow in dataTableVersion.Rows)
{
try
{
var QueryUpdateOrInsert = @"INSERT OR REPLACE INTO VersionNumbers
(VersionNumberID,
ENVID,
EnvShortName,
VersionNumber,
BuildNumber,
SourceGetVersion,
DeploymentDate,
CreatedDateTime,
ModifiedDateTime,
Deleted,
LastGetFromServerDateTime) Values (" +
"'" + dataRow["VersionNumberID"] + "'," +
"'" + dataRow["ENVID"] + "'," +
"'" + dataRow["ENVShortName"] + "'," +
"'" + dataRow["CurrentVersionNumber"] + "', " +
"'" + dataRow["CurrentBuildName"] + "', " +
"'" + dataRow["CurrentLastAssociatedChangeset"] +
"'" + dataRow["DeploymentDate"] + "', " +
"'" + dataRow["CreatedDateTime"] + "', " +
"'" + dataRow["ModifiedDateTime"] + "', " +
"'" + dataRow["Deleted"] + "', " +
" '" + currentDateTimeUtc + "')";
var sqlcmd = new SqlCommand(QueryUpdateOrInsert, dbConnection);
var sda = new SqlDataAdapter(sqlcmd);
var sqlexe = sqlcmd.ExecuteNonQuery();
}
catch (Exception Exception)
{
MessageBox.Show(Exception.Message);
}
}
dbConnection.Close();
最佳答案
问题是您没有使用 SQLite
命令/数据适配器,而是为 SQL Server 设计的。您需要安装 System.Data.SQLite .net Adapter并使用正确的 Sqlite 连接、命令和适配器:SQLiteConnection
、SQLiteCommand
和 SQLiteDataAdapter
关于c# - SQLite 关键字 'OR' 附近的语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40592346/