2017-07-26 52 views
1

好吧...所以我想爲我的應用程序製作這個有趣的小遊戲..我以前使用過代碼,但它贏了在我的其他文件上工作,它只是給我「在調用read()之前無效嘗試訪問一個字段」。在調用read()之前無效嘗試訪問一個字段(在調用read之後)(

 con.Open(); 

     MySqlCommand cmd = con.CreateCommand(); 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "select * from users WHERE id='" + lblMainId.Text + "'"; 
     cmd.ExecuteNonQuery(); 

     MySqlDataReader mdr; 
     mdr = cmd.ExecuteReader(); 

     if (mdr.Read()) 
     { 
      cf.setMoney = Math.Round(mdr.GetDouble("money"), 2).ToString(); 
     } 
     else 
     { 
      MessageBox.Show("Failure - Please try again!"); 
     } 

     con.Close(); 

編輯: 發現我 「在我的代碼前面。因此它試圖SELECT * FROM」 造lblMainId.Text = 「」 ....

我的壞,但感謝反正答案。希望其他人可以使用它們:)

回答

0

我認爲你需要刪除

cmd.ExecuteNonQuery() 

線。我不確定它是否對通話造成影響

cmd.ExecuteReader() 

但它絕對不是必需的。

+0

另外,不要在不檢查mdr.HasRows的情況下調用Read()。試圖讀取零行返回時也會拋出異常。將所有這些對象放入使用塊中或手動處理它們。另一個紅旗:不要將貨幣存儲爲浮點數。將其存儲爲DECIMAL類型。 – dodexahedron

相關問題