2013-05-21 37 views
0

這是一個真正的小問題,但即將推出我的頭髮。 我試圖從我的本地數據庫讀取,但它沒有給我任何東西。 下面是代碼:ado.net無法從我的數據庫中讀取

protected void readBtn2_Click(object sender, EventArgs e) 
{ 
    string ConnString = "server=localhost; Trusted_Connection=yes; database=expreimentalDB"; 

    string SqlString = ("SELECT * FROM tblCity WHERE city = '@city'"); 

    using (SqlConnection conn = new SqlConnection(ConnString)) 
    { 
     using (SqlCommand cmd = new SqlCommand(SqlString, conn)) 
     { 
      cmd.CommandType = CommandType.Text; 
      cmd.Parameters.AddWithValue("city", cityTB.Text); 

      conn.Open(); 
      using (SqlDataReader reader = cmd.ExecuteReader()) 
      { 
       GridView1.DataSource = reader; 
       GridView1.DataBind(); 
      } 
     } 
    } 
} 

ConnectionString中應該工作(因爲如果我重新命名它崩潰字符串中的數據庫部分)。

的SQL是工作(嘗試在SQL經理)

讀取器(SqlDataReader對象)是空的 它是什麼我havnt嘗試過了嗎?

回答

4

您需要從周圍@city在查詢中刪除單引號,使之成爲

string SqlString = "SELECT * FROM tblCity WHERE city = @city"; 

然後

cmd.Parameters.AddWithValue("city", cityTB.Text); 

需要改變,以

cmd.Parameters.AddWithValue("@city", cityTB.Text); 
+0

當然,那很容易(有點尷尬)。非常感謝你最好的先生! – WIRN

1

我不太清楚,但是在將它添加到命令時,你不應該在@ -sign前面添加參數的名稱嗎?像這樣:

cmd.Parameters.AddWithValue("@city", cityTB.Text);