2010-12-21 69 views
1

我的代碼是更新記錄,如果它已經存在於數據庫中,否則插入爲新記錄。asp.net c#代碼錯誤(mysql數據庫連接)

我的代碼如下:

protected void Button3_Click(object sender, EventArgs e) 
    { 

     OdbcConnection MyConnection = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=testcase;User=root;Password=root;Option=3;"); 
     MyConnection.Open(); 
     String MyString = "select fil_no,orderdate from temp_save where fil_no=? and orderdate=?"; 
     OdbcCommand MyCmd = new OdbcCommand(MyString, MyConnection); 
     MyCmd.Parameters.AddWithValue("", HiddenField4.Value); 
     MyCmd.Parameters.AddWithValue("", TextBox3.Text); 
     using (OdbcDataReader MyReader4 = MyCmd.ExecuteReader()) 
     { 
      //** 
      if (MyReader4.Read()) 
      { 

        String MyString1 = "UPDATE temp_save SET order=? where fil_no=? AND orderdate=?"; 
        OdbcCommand MyCmd1 = new OdbcCommand(MyString1, MyConnection); 
        MyCmd1.Parameters.AddWithValue("", Editor1.Content.ToString()); 
        MyCmd1.Parameters.AddWithValue("", HiddenField1.Value); 
        MyCmd1.Parameters.AddWithValue("", TextBox3.Text); 
        MyCmd1.ExecuteNonQuery(); 
       } 



      else 
      { 

       // set the SQL string 
       String strSQL = "INSERT INTO temp_save (fil_no,order,orderdate) " + 
       "VALUES (?,?,?)"; 

       // Create the Command and set its properties 
       OdbcCommand objCmd = new OdbcCommand(strSQL, MyConnection); 
       objCmd.Parameters.AddWithValue("", HiddenField4.Value); 
       objCmd.Parameters.AddWithValue("", Editor1.Content.ToString()); 
       objCmd.Parameters.AddWithValue("", TextBox3.Text); 

       // execute the command 
       objCmd.ExecuteNonQuery(); 



      } 


     } 
    } 

我得到的錯誤爲:

ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-5.1.51-community]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order,orderdate) VALUES ('04050040272009','      &' at line 1 

在表temp_save字段中的數據類型是:

fil_no-->INT(15)(to store a 15 digit number) 
order-->LONGTEXT(to store contents from HTMLEditor(ajax control)) 
orderdate-->DATE(to store date) 

請幫我解決我的錯誤。

+0

您是否知道mysql支持'insert ... on duplicate key update'? – ajreal 2010-12-21 07:36:01

回答

1

訂單是一個保留字。有關保留字的完整列表,請查看this document

你可以用它在反單引號,即 (我的鍵盤上的一個反勾是下〜鍵)

INSERT INTO temp_save (fil_no,`order`,orderdate).... 
0

我會嘗試括號內情況......這就是它在毫秒的方式sql服務器..可能在mySql中相同

String MyString1 = "UPDATE temp_save SET [order]=? where fill .... ";