2012-11-30 41 views
-5

Possible Duplicate:
SqlDataReader parameter not workingC#SQL查詢和撇號的

我想從一個文本框在windows窗體應用程序中的SQL參數獲得計算機名稱。 當我輸入如下參數時,它工作正常。

   string query = @"select stationipaddress from station where stationname = @Name"; 
       using (SqlCommand cmd = new SqlCommand(query, cs)) 
      { 


       SqlParameter param = new SqlParameter(); 
       param.ParameterName = "@Name"; 
       param.Value = "demo"; 
       cmd.Parameters.Add(param); 

       using (SqlDataReader dr = cmd.ExecuteReader()) 
       { 

        while (dr.Read()) 
        { 
         label3.Text = dr.GetSqlValue(0).ToString(); 
         results = dr.GetValue(0).ToString(); 
         MessageBox.Show(dr.GetValue(0).ToString()); 
         MessageBox.Show(results); 
        } 

但是,當我嘗試從文本框中獲取數據時,它什麼都不做。

string query = @"select stationipaddress from station where stationname = @Name"; 
      using (SqlCommand cmd = new SqlCommand(query, cs)) 
      { 


        SqlParameter param = new SqlParameter(); 
       param.ParameterName = "@Name"; 
       param.Value = textBox1.Text; 
       cmd.Parameters.Add(param); 

       using (SqlDataReader dr = cmd.ExecuteReader()) 
       { 

        while (dr.Read()) 
        { 
         label3.Text = dr.GetSqlValue(0).ToString(); 
         results = dr.GetValue(0).ToString(); 
         MessageBox.Show(dr.GetValue(0).ToString()); 
         MessageBox.Show(results); 
        } 
+0

您看到的實際行爲是什麼? –

+2

更改密碼 –

+0

上述錯誤/問題是什麼? –

回答

1

我會建議您將所有的MessageBox操作移出,直到從數據庫中檢索到結果爲止。將您的結果添加到強類型列表中,然後相應地顯示消息。

0

嘗試雙引號像「」 - >「約翰」 - >「約翰「的」

+0

我這樣做:''@StationName''和它說'@StationName'附近的語法不正確 – user1836162

+0

在您的問題中添加了整個異常。 – iefpw

0

你打電話後AddWithValue設定參數的DbType。這應該引用你的字符串。

cmd.Parameters["@StationName"].SqlDbType = SqlDbType.NVarChar; 

編輯:對不起,我的意思是指定SqlDbType

+0

當我這樣做時,我得到以下錯誤:只有賦值,調用,增量,減量和新的對象表達式可以用作語句 – user1836162

+0

我已經更新了我的代碼 – user1836162

0

你爲什麼不剝離出apostrophies即

cmd.Parameters.AddWithValue("@StationName", textBox1.Text.Replace("'","") 

如果工作站名稱數據庫字段值包含apostrophies那麼你將有將您的SQL語句更改爲:

select stationipaddress from station where replace(stationname,CHAR(39),'') = @StationName 
+0

以上查詢所說的只是@StationName或'@StationName 「? – user1836162

+0

我不明白原來的問題。撇號是數據庫字段(Station.StationName),還是它們在文本框(textbox1.text)中,還是它們都在? – w0051977

+0

爲了從db獲得結果,它必須是這樣的:where stationname ='stationname',這就是爲什麼我不能得到任何結果 – user1836162