2012-07-12 62 views
3

我已成功檢查數據庫中是否有值。檢查記錄後,讀卡器無法繼續

下面是代碼:

if (!reader.Read()) 
{ 
    MessageBox.Show(" Can not find user!"); 
    reader.Close(); 
} 
else 
{ 
    int count = 0; 
    while (reader.Read()) 
    { 
     string user = (string)reader.GetString(0); 
     string name = (string)reader.GetString(1); 
     int roll = (int)reader.GetInt32(2); 
     string phone = (string)reader.GetString(3); 
     string address = (string)reader.GetString(4); 
     string birthofdate = (string)reader.GetString(5); 
     label1.Text = "" + roll; 
     label2.Text = name; 
     label3.Text = birthofdate; 
     label4.Text = "" + phone; 
     label5.Text = address; 
    } 
} 

但問題是,while循環反正跳過。

+0

是否檢查過標籤的可見性? – 2012-07-12 06:35:12

+0

你真的想要演員嗎?'GetString'將返回字符串和'GetInt32'一個int – V4Vendetta 2012-07-12 06:37:10

回答

5

更換

if (!reader.Read()) 

if (!reader.HasRows) 
+0

非常感謝你,它解決了我的問題,並作爲夢想工作^^ – famfamfam 2012-07-12 06:43:38

+3

@fukemyfukemy:考慮到[接受](http: //meta.stackexchange.com/a/5235/147438)對你最有幫助的答案。 – 2012-07-12 07:00:27

0

你不應該使用reader.Read()兩次,用它只有一次

if (!reader.HasRows) 
       { 
        MessageBox.Show(" Can not find user!"); 
        reader.Close(); 
       } 
       else 
       { 
        int count = 0; 
        while (reader.Read()) 
        { 
         string user = (string)reader.GetString(0); 
         string name = (string)reader.GetString(1); 
         int roll = (int)reader.GetInt32(2); 
         string phone = (string)reader.GetString(3); 
         string address = (string)reader.GetString(4); 
         string birthofdate = (string)reader.GetString(5); 
         label1.Text = "" + roll; 
         label2.Text = name; 
         label3.Text = birthofdate; 
         label4.Text = "" + phone; 
         label5.Text = address; 

        } 
       } 
2

我只想有循環,使你撥打Read一個的地方,並檢查count算賬:

int count = 0; 
while (reader.Read()) 
{ 
    ... 
} 
if (count == 0) 
{ 
    MessageBox.Show(" Can not find user!"); 
} 

我已經刪除了reader.Close()呼叫 - 只要你reader處於using語句(應該是),它會自動關閉。