Получение ошибки БД: несоответствие типов данных в выражении критериев c # - PullRequest
0 голосов
/ 02 августа 2011

Довольно плохо знаком с программированием на 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();
        }
    }

Ответы [ 2 ]

0 голосов
/ 02 августа 2011

Попробуйте!

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

Дайте мне знать, если это поможет!

0 голосов
/ 02 августа 2011

РЕДАКТИРОВАТЬ:

Получите сейчас ... отформатируйте ваш запрос, как показано ниже, и он наверняка будет работать

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

С полями Numeric, вы не должныпоставить апострофы вокруг значения.Это была проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...