2012-10-31 40 views
0

我必須創建一個自動取款機應用程序才能訪問數據庫,該數據庫包含樣本客戶記錄。我在我的組合框中顯示來自accountInformation表(數據庫)的帳號的問題。我很確定我正確創建了數據庫連接,並且我認爲我的代碼會顯示組合框中的數字,所以我不確定問題出在哪裏。有什麼需要改變的comboBox屬性? 這裏是我的代碼:ComboBox未顯示來自數據庫的信息

using SQLDll; 

namespace WindowsFormsApplication14 
{ 

public partial class Form1 : Form 
{ 
    private Connection myConnection; 
    private Statement myStatement; 
    private ResultSet myResultSet; 
    String databaseURL = "http://www.boehnecamp.com/phpMyAdmin/razorsql_mysql_bridge.php"; 


    public Form1() 
    { 
     InitializeComponent(); 

     try 
     { 
      //connect to database 
      SQL sql = new SQL(); 
      myConnection = sql.getConnection(databaseURL); 
      //create Statement for executing SQL 
      myStatement = myConnection.createStatement(databaseURL); 
     } 
     catch (Exception) 
     { 
      Console.WriteLine("Cannot connect to database server"); 
     } 
     //close statement and database connection 
     myStatement.close(); 
     myConnection.close(); 
    } 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     loadAccountNumbers(); 
    } 

    public void setText(string text) 
    { 


    } 
    //load account numbers to ComboBox 
    private void loadAccountNumbers() 
    { 
     //get all account numbers from database 
     try 
     { 
      myResultSet = myStatement.executeQuery("SELECT accountNumber FROM accountInformation"); 
      // add account numbers to ComboBox 
      while (myResultSet.next()) 
      { 
       accountNumberComboBox.Items.Add(myResultSet.getString("accountNumber")); 
      } 
      myResultSet.close(); // close myResultSet 
     }//end try 
     catch (Exception) 
     { 
      Console.WriteLine("Error in loadAccountNumbers"); 
     } 
    }//end method to loadAccountNumbers 
+0

你有什麼myResultSet聲明爲? (類型,值等) –

+1

當您逐步完成代碼時會發生什麼?你有沒有進入'while(myResultSet.next())'循環? –

+0

根據您在哪裏或如何調用方法,您可能需要在方法調用後插入'combobox.refresh()'。即使它是一個單線程程序,有時候也可能是這樣 - 我在前一天編寫的一個項目中體驗過它。而且你應該只在整個循環中加入斷點,看看你是否擊中了它。調試器是你的朋友! –

回答

0

我會建議把一切都放在一個方法中。它更具可讀性,即使發生異常,您也可以確保一切都關閉。

public partial class Form1:Form { private Connection myConnection; 私人聲明myStatement; private ResultSet myResultSet; String databaseURL =「http://www.boehnecamp.com/phpMyAdmin/razorsql_mysql_bridge.php」;

public Form1() 
{ 
    InitializeComponent(); 
    loadAccountNumbers(); 
} 

//load account numbers to ComboBox 
private void loadAccountNumbers() 
{ 
    SQL sql = new SQL(); 
    using (myConnection = sql.getConnection(databaseURL)) 
    using (myStatement = myConnection.createStatement(databaseURL)) 
    using (myResultSet = myStatement.executeQuery("SELECT accountNumber FROM accountInformation")) 
    { 
     // add account numbers to ComboBox 
     while (myResultSet.next()) 
      accountNumberComboBox.Items.Add(myResultSet.getString("accountNumber")); 
    } 
} 
+0

我同意您的代碼更具可讀性,但如果我更改了我的內容,我不會滿足「要求」。 – wolne

0

我發現了什麼是錯的。我知道我必須在某處調用loadAccountNumbers(),但我不確定它在哪裏。我將它放在公共Form1()中,並解決了我的問題!感謝所有的幫助。