C# SQLite 更新错误(SQL 逻辑错误或缺少“(”:语法错误“附近的数据库)

本文关键字:错误 语法 数据库 SQL 更新 SQLite | 更新日期: 2023-09-27 17:55:31

我有一个带有各种文本框和一个下拉框的 WPF 应用程序。我正在尝试使用输入到其中的详细信息更新我的 SQLite 数据库。在我首先将数据插入SQLite数据库之前,我已经重新设计了该方法。问题是当我执行代码时,出现错误"SQL 逻辑错误或缺少数据库"(":语法错误。

private void ButtonEditExmUpdate_OnClick(object sender, RoutedEventArgs e)
{
    var ModifiedDateTime = DateTime.Now;
    {
        var ConnString = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
        using (var DbConnection = new SQLiteConnection(ConnString))
        {
            try
            {var InsertIntoTable = (@"Update [Exm]
                Set(ExmID = @ExmID, ExmEnvironmentType = @ExmEnvironmentType, ExmURL = @ExmURL, ExmServer = @ExmServer, ExmModifiedDate = @ExmModifiedDate, ExmDeleted = @ExmDeleted)
                WHERE(Exm.ExmDeleted = 0) AND (Exm.ExmID = '" + ExmID.Text + "')");
                var insertIntoUsernamePasswordString = (@"Update [ExmUsernamePassword]
                Set (ExmUsername = @ExmUsername, ExmPassword = @ExmPassword,  ExmServer = @ExmServer, ExmModifiedDate = @ExmModifiedDate)
                WHERE(ExmUsernamePassword.Deleted = 0) AND (ExmUsernamePassword.ExmUsernamePasswordsID = '" + ExmUsernamePasswordsID.Text + "')");
                var insertIntoExmTable = new SQLiteCommand(insertIntoExmTableString);
                var insertIntoExmUsernamePasswordTable = new SQLiteCommand(insertIntoUsernamePasswordString);
                insertIntoExmTable.Connection = DbConnection;
                insertIntoExmUsernamePasswordTable.Connection = DbConnection;
                DbConnection.Open();
                insertIntoExmTable.Parameters.AddWithValue("@ExmEnvironmentType", ComboBoxExmEnvironmentType.Text);
                insertIntoExmTable.Parameters.AddWithValue("@ExmURL", TextBoxExmUrl.Text);
                insertIntoExmTable.Parameters.AddWithValue("@ExmServer", TextBoxExmServerName.Text);
                insertIntoExmTable.Parameters.AddWithValue("@ExmModifiedDate", ModifiedDateTime);
                insertIntoExmUsernamePasswordTable.Parameters.AddWithValue("@ExmUsername", TextBoxExmUsername.Text);
                insertIntoExmUsernamePasswordTable.Parameters.AddWithValue("@ExmPassword", TextBoxExmPassword.Text);
                insertIntoExmUsernamePasswordTable.Parameters.AddWithValue("@ExmServer", TextBoxExmServerName.Text);
                insertIntoExmUsernamePasswordTable.Parameters.AddWithValue("@ExmModifiedDate", ModifiedDateTime);
                try
                {
                    insertIntoExmTable.ExecuteNonQuery();
                    DbConnection.Close();
                    DbConnection.Open();
                    insertIntoExmUsernamePasswordTable.ExecuteNonQuery();
                    DbConnection.Close();
                    MessageBox.Show("Successfully updated");
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
        }
    }
}
}

错误:SQL 逻辑错误或缺少"("附近的数据库:语法错误。

C# SQLite 更新错误(SQL 逻辑错误或缺少“(”:语法错误“附近的数据库)

我找到了导致问题的原因,这是因为我的 SET 语句在括号内,因此 SQL 字符串的最终代码如下所示。

var InsertIntoTable = (@"Update [Exm]
                Set ExmID = @ExmID, ExmEnvironmentType = @ExmEnvironmentType, ExmURL = @ExmURL, ExmServer = @ExmServer, ExmModifiedDate = @ExmModifiedDate, ExmDeleted = @ExmDeleted 
                WHERE(Exm.ExmDeleted = 0) AND (Exm.ExmID = '" + ExmID.Text + "')");
var insertIntoUsernamePasswordString = (@"Update [ExmUsernamePassword]
                Set ExmUsername = @ExmUsername, ExmPassword = @ExmPassword,  ExmServer = @ExmServer, ExmModifiedDate = @ExmModifiedDate
                WHERE(ExmUsernamePassword.Deleted = 0) AND (ExmUsernamePassword.ExmUsernamePasswordsID = '" + ExmUsernamePasswordsID.Text + "')");