2011-05-31 88 views
0

中的語法錯誤(缺少運算符)您好我是使用SQL Server中的存儲過程傳遞參數到查詢, ,但現在我正在更改我的數據庫到MS訪問,這是我的第一時間處理。在查詢表達式'System.Byte []'

我該如何將字節[]傳遞給sql查詢? 因爲我得到這個錯誤 查詢表達式'System.Byte []'中的語法錯誤(缺少運算符)。

這是我的代碼

public static int EditWhois(object ID,object Image, object Ranswer, object Fanswer1, object Fanswer2, object Fanswer3) 
    { 
     int result = 0; 
     String sql = "UPDATE Whois SET [Image]="[email protected]+", Ranswer=" + Ranswer + ", Fanswer1=" + Fanswer1 + ",Fanswer2=" + Fanswer2 + ",Fanswer3=" + Fanswer3 + " WHERE ID=" + ID; 
     System.Windows.Forms.MessageBox.Show(sql); 
     cmd = new OleDbCommand(sql, con); 

     //cmd.Parameters.AddWithValue("@ID", ID); 
     //cmd.Parameters.AddWithValue("@Image", Image); 
     //cmd.Parameters.AddWithValue("@Ranswer", Ranswer); 
     //cmd.Parameters.AddWithValue("@Fanswer1", Fanswer1); 
     //cmd.Parameters.AddWithValue("@Fanswer2", Fanswer2); 
     //cmd.Parameters.AddWithValue("@Fanswer3", Fanswer3); 

     if (con.State != ConnectionState.Open) 
     { 
      con.Open(); 
      result = cmd.ExecuteNonQuery(); 
      con.Close(); 
     } 
     return result; 
    } 
+0

你爲什麼要註釋掉參數化的行?爲什麼你的方法中的每個參數都是「對象」?哪一個是'byte []'? – BoltClock 2011-05-31 21:15:52

+0

使用參數化的佔位符(它看起來像是最初嘗試的)。它會清理代碼並擺脫錯誤。 – 2011-05-31 21:16:10

+0

我評論參數化行,因爲我直接傳遞參數到查詢,我的參數是避免轉換的對象,字節[]是@Image – T4mer 2011-05-31 21:32:25

回答

0

結果仍爲0; 我知道問題出在哪裏。 如果連接關閉,查詢將成功執行,但如果它是opend,它將不會由於這種情況而被執行。

if (con.State != ConnectionState.Open) 
{ 
    con.Open(); 
    result = cmd.ExecuteNonQuery(); 
    con.Close(); 
} 

它必須是

if (con.State != ConnectionState.Open) 
{ 
    con.Open(); 
} 
    result = cmd.ExecuteNonQuery(); 
    con.Close(); 

感謝所有。

0

使用@參數替換。還有@BoltClock說,改變你的方法簽名。

public static int EditWhois(object ID,object Image, object Ranswer, 
    object Fanswer1, object Fanswer2, object Fanswer3) 
{ 
    int result = 0; 
    String sql = "UPDATE Whois SET [Image][email protected], [email protected], " + 
     "[email protected], [email protected], [email protected] " + 
     "WHERE [email protected]"; 
    cmd = new OleDbCommand(sql, con); 

    cmd.Parameters.AddWithValue("@ID", ID); 
    cmd.Parameters.AddWithValue("@Image", Image); 
    cmd.Parameters.AddWithValue("@Ranswer", Ranswer); 
    cmd.Parameters.AddWithValue("@Fanswer1", Fanswer1); 
    cmd.Parameters.AddWithValue("@Fanswer2", Fanswer2); 
    cmd.Parameters.AddWithValue("@Fanswer3", Fanswer3); 

    if (con.State != ConnectionState.Open) 
    { 
     con.Open(); 
     result = cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 
    return result; 
} 
+0

標準表達式中的數據類型不匹配。 ????? – T4mer 2011-05-31 21:35:59