2011-08-02 21 views
0

C#およびdbプログラミングの新機能。そして、私は他人のコードを引き継いだ。 DBを更新しようとするとエラーが発生します。ここでは、コードです:DBエラーの取得:条件式のデータ型の不一致c#

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

あなたは完全なエラー文字列を投稿できますか? – raym0nd

+0

どのようにエラー文字列を取得できますか? e.messageは "条件式のデータ型の不一致" – Matt

答えて

0

EDIT:

ガッチャ今...以下のようなクエリをフォーマットし、それが確実にNumericフィールドyiouは、アポストロフィを置くべきではないと

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

を働くだろう値の周り。それが問題でした。

+0

eventIDはintです...私は二重チェックしました。 – Matt

+0

あなたは私の答えで提案したクエリフォーマットを試しましたか?ちょうど 'set isActive = '1''を引用して一度試してみてください。うまくいくはずです。 – Rahul

+0

しました。運がない。 MySQL Workbenchで手動で試してみるのにどのコマンドを使用しますか?私はデータベースからSELECTクエリを実行する方法を知っています。しかし、私はどのように更新を実行するのですか?このようにして、データベースがアップデートを受けるかどうかを確認することができます。 – Matt

0

試してみてください!

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

これが役立つ場合はお知らせください。

関連する問題