2012-09-14 50 views
3

爲什麼我收到此錯誤?顯示來自SQL的數據時出錯

輸入字符串格式不正確。

我想根據ID從選定的列中獲取數據。

代碼是:在行

var dr = cmd.ExecuteReader(); 

我的ID是INT數據類型,它是PK

protected void Page_Load(object sender, EventArgs e) 
{ 

    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString); 
    SqlCommand cmd = new SqlCommand("SELECT Date,Day,Time,Total FROM RSVP WHERE Id = @dummy", conn); 

    conn.Open(); 

     cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = Label2.Text; 

    var dr = cmd.ExecuteReader(); 
    if (dr.HasRows == false) 
    { 
     throw new Exception(); 
    } 
    if (dr.Read()) 
    { 
     Label8.Text = dr[0].ToString(); 
     Label9.Text = dr[1].ToString(); 
     Label10.Text = dr[2].ToString(); 
     Label11.Text = dr[3].ToString(); 
    } 

錯誤。謝謝。

+0

你試過了嗎?Value = int.Parse(Label2.Text)'? – Reniuz

回答

1

只需在放慢參數與AddWithValue以下列方式添加值:

cmd.Parameters.AddWithValue("@dummy", Label2.Text); 

implicit conversionAddWithValue工作時。

+0

我收到此錯誤:將nvarchar值'Label'轉換爲數據類型int時轉換失敗。 –

+0

這意味着,Label2.Text的值「Label」不能轉換爲int ....調試您的代碼n請參閱Label2.Text值.... –

+0

在我的上一頁中,有一個下拉菜單(用戶名),當用戶點擊用戶名,下拉B將顯示用戶名的ID。然後點擊保存,保持ID會話的會話,移動下一頁。 Label2將顯示ID的會話。從會話(ID)中,上面的代碼用於顯示屬於ID的數據。 –

1

Label2.Text不會是一個整數。

將其轉換爲整數。

cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = int.Parse(Label2.Text); 
+0

錯誤仍然是d –

+0

Label2.Text有什麼內容? – Arran

+0

它已經從前一頁是ID的會話。 –

0

請更新您的SQL語句:

SqlCommand cmd = new SqlCommand("SELECT [Date],[Day],[Time],Total FROM RSVP WHERE Id = @dummy", conn); 

希望這有助於。

+0

我想你在這裏缺少你的答案的部分? –

+0

@Terric我可以知道什麼是缺少的? – RL89

2

逃生關鍵字查詢:

"SELECT [Date],[Day],[Time],Total FROM RSVP WHERE Id = @dummy" 

轉換您的數據和INT。

cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = Convert.ToInt32(Label2.Text); 
0

你確定Label2.Text有一個有效的整數嗎?使用TryParse來檢查label2.Text是否有有效值。

int number; 
bool result = Int32.TryParse(Label2.Text, out number); 

這是容易得多,如果該字符串可能不實際包含一個整數使用 - 它不拋出一個異常,所以它更容易從中恢復。