2017-04-25 84 views
-2

因此,當我在C#程序中運行此代碼時,它將返回false。然而,當我在visual sutdio的查詢設計器中返回它時,它會返回正確的值。SQL在我的代碼中不起作用,但在查詢時起作用

private void GetUserELO(int UserID, ref double Elo) 
    { 
     clsDBConnector dbConnector = new clsDBConnector(); 
     OleDbDataReader dr; 
     string sqlStr; 
     dbConnector.Connect(); 
     sqlStr = "SELECT Users.Elo FROM Users WHERE UserID = " + UserID + ""; 
     dr = dbConnector.DoSQL(sqlStr); 
     while (dr.Read()) 
     { 
      string Elo1 = Convert.ToString(dr.Read()); 
      MessageBox.Show("User Added" + UserID, "Sucessfully Added User" + 
      Elo1, 
      MessageBoxButtons.OK, MessageBoxIcon.Hand); 
     } 
    } 

請忽略僅顯示輸出的消息框。

+3

怎麼樣你告訴我們,在'dbConnector.DoSQL'魔術 – stuartd

+1

要調用'Read'什麼,我認爲是一個DataReader 。你不想這樣做,因爲它前進到下一條記錄而不是返回值 - 你可以使用字符串Elo1 = dr.GetString(0);' – stuartd

回答

2

您在每次迭代中對dr.Read()進行2次調用。你必須只有一個。 使用的GetValue用於訪問列結果和閱讀來獲取下一個記錄

private void GetUserELO(int UserID, ref double Elo) 
    { 
     clsDBConnector dbConnector = new clsDBConnector(); 
     OleDbDataReader dr; 
     string sqlStr; 
     dbConnector.Connect(); 
     sqlStr = "SELECT Users.Elo FROM Users WHERE UserID = " + UserID + ""; 
     dr = dbConnector.DoSQL(sqlStr); 
     while (dr.Read()) 
     { 
      string Elo1 = dr.GetValue(0).ToString(); 
      MessageBox.Show("User Added" + UserID, "Sucessfully Added User" + 
      Elo1, 
      MessageBoxButtons.OK, MessageBoxIcon.Hand); 
     } 
    } 
+0

謝謝!你修好了你是一個救世主! – Smadger

+0

請標記答案爲正確的,併爲此投票,謝謝 –

+0

我標記了它,但由於作爲一個新成員而無法上傳它。但非常感謝你! – Smadger

相關問題