C# 获取数据库错误:条件表达式c中的数据类型不匹配

C# 获取数据库错误:条件表达式c中的数据类型不匹配,c#,mysql,visual-studio-2010,C#,Mysql,Visual Studio 2010,对c和db编程来说是相当陌生的。我已经接管了别人的密码。我试图更新数据库时出错。代码如下: private void EnableEvent(int eventID) { OleDbCommand oleCMD = new OleDbCommand(); oleCMD.Connection = Database.SqlConn(); OleDbTransaction oleTrans = oleCMD.Connection.Beg

对c和db编程来说是相当陌生的。我已经接管了别人的密码。我试图更新数据库时出错。代码如下:

   private void EnableEvent(int eventID)
    {


        OleDbCommand oleCMD = new OleDbCommand();
        oleCMD.Connection = Database.SqlConn();
        OleDbTransaction oleTrans = oleCMD.Connection.BeginTransaction();
        oleCMD.Transaction = oleTrans;

        try
        {
            StringBuilder sql = new StringBuilder();
            sql.AppendFormat("UPDATE Events SET isActive = 1 where EventID='{0}'", eventID);

            oleCMD.CommandText = sql.ToString();
            // insert the header
            oleCMD.ExecuteNonQuery();
            oleTrans.Commit();
        }
        catch(Exception e)
        {
            MessageBox.Show(e.Message, "Database Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
        }
        finally
        {
            oleCMD.Connection.Close();
            oleCMD.Dispose();
        }
    }
编辑:

明白了。。。按照下面的格式设置查询,它肯定会工作

        StringBuilder sql = new StringBuilder();
        sql.AppendFormat("UPDATE Events SET isActive = 1 where EventID = {0}", eventID);
对于数字字段,您不应该在值周围加撇号。这就是问题所在。

试试这个

private void EnableEvent(int eventID)
{
    OleDbConnection myConn = new OleDbConnection(myConnString);
    myConn.Open();

    OleDbCommand myCommand = myConn.CreateCommand();
    OleDbTransaction myTrans;
    // Start a local transaction
    myTrans = myConn.BeginTransaction();
   // Assign transaction object for a pending local transaction
    myCommand.Connection = myConn;
    myCommand.Transaction = myTrans;

    try
    {
        StringBuilder sql = new StringBuilder();
        sql.AppendFormat("UPDATE Events SET isActive = 1 where EventID='{0}'", eventID);

        myCommand.CommandText = sql.ToString();
        // insert the header
        myCommand.ExecuteNonQuery();
        myTrans.Commit();
    }
    catch(Exception e)
    {
        MessageBox.Show(e.Message, "Database Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    finally
    {
        myCommand.Connection.Close();
        myCommand.Dispose();
    }
}

让我知道这是否有帮助

您可以发布完整的错误字符串吗?我如何获得更多的错误字符串?e、 消息是条件ExpressioneventID中的数据类型不匹配是一个整数。。。我仔细检查了。您是否尝试了我在回答中建议的查询格式。。。只需引用set isActive='1'并重试一次。应该可以,我做到了。不走运。我会在MySQL工作台中使用什么命令手动尝试它?我知道如何从数据库运行SELECT查询。但是如何运行更新?这样我就可以知道数据库是否会进行更新。