简体   繁体   English

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

[英]Getting DB error: data type mismatch in criteria expression c#

Pretty new to c# and db programming. C#和db编程的新手。 And I've taken over somebody else's code. 而且我已经接管了别人的代码。 I'm getting an error when I'm trying to update the DB. 尝试更新数据库时出现错误。 Here's the code: 这是代码:

   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();
        }
    }

EDIT: 编辑:

Gotcha now ... format your query like below and it would surely work 现在知道...按如下格式设置查询,它肯定可以工作

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

With Numeric fields yiou shouldn't put apostrophes around the value. 对于Numeric字段,yiou不应在值周围加上撇号。 That was the problem. 那就是问题所在。

Try this! 尝试这个!

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();
    }
}

Let me know if this helps! 让我知道这是否有帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM