2015-08-27 25 views
0

我有一個Asp.net網頁中的SQL字符串,後面有vb代碼。Asp.net字符串創建給運算符「&」錯誤VB

錯誤:Sys.WebForms.PageRequestManagerServerErrorException:運營商「&」沒有爲字符串定義的「UPDATE dbusersdata SET`SH。

它之前,但不知什麼原因,我現在就開始收到以下錯誤做工精細「然後輸入'TextBox'。

UPDATE:SH是一個字符串( '保存' 或 '隱藏')

UPDATE:我使用的背景MySQL數據庫。

Protected Sub savehide_SelectedIndexChanged(sender As Object, e As EventArgs) 

      Dim SQLstring As String = "" 
      Dim SH As String 
      SH = saveorhide.SelectedItem.Value 
      ' the following line is where the error occurs 
      SQLstring = "UPDATE `db`.`usersdata` SET `SH`='" & SH & "' WHERE `PIC` = '" & Session("UserId") & "'" 
      Session("SH") = SH 
      SQLNonQuery_mysql(SQLstring) 
      CLEARALL() 
      displaydata()  
    End Sub 

我花了幾個小時,但我找不到原因,特別是在它工作正常之前。 此代碼在更改下拉列表字段時運行。 它也開始發生在其他dropdownlist和SQL字符串創建代碼...所以它現在在各種VB地方失敗(如我之前說的那樣) 我想知道是否有一個錯誤或一些奇怪的這個錯誤現在(而不是之前)出現的原因以及解決方案是什麼。

+3

使用SQL參數(與你的文本框的名稱替換TextBox1)總是毫無例外。 –

+0

使用sql參數,不要並置!我看到你正在使用',db可能沒有正確的威脅,你有沒有嘗試刪除它們?此外,SH變量內的值是多少? –

+0

我感謝您的意見。該錯誤是由於錯誤的變量設置,這是固定的,但我會注意到的SQL參數問題,因爲我不知道他們是如此重要。 – user1135218

回答

2

根據錯誤信息,要麼是SH是TextBox或Session("UserId")是TextBox。

由於您已經顯示了SH的聲明,唯一可疑的剩餘部分是Session("UserId")

你能告訴你如何設置Session("UserId")值嗎?

我最好的猜測是,你正在做這件事:

Session("UserId") = TextBox1 

您應將其更改爲:

Session("UserId") = TextBox1.Text 

+1

是的!這是問題!我使用Session(「UserId」)= TextBox1而不是Session(「UserId」)= TextBox1.Text來設置會話變量。我不能夠感謝你!這解決了所有其他問題! – user1135218

+0

酷!很高興幫助:) –