[英]Populating ComboBox and CheckedListBox from Database, C#
好的,正如標題所述,我正在嘗試從數據庫填充組合框,然后根據組合框的更改來更改清單列表的內容。 這里的問題是,我正盡我所能。 我決定使用一個訪問數據庫(db1.mdb,與exe位於同一目錄)。 主數據表Table1具有組合框中應包含的項目的名稱(item1,item2,item3)。 然后,我為每個值(tableitem1,tableitem2,tableitem3)有單獨的表,並且列表框將一次使用這些表,列出“項目名稱”字段,其中每個表中的金額都有變化。 選中清單列表中的選項后,我需要從與清單列表框關聯的數據庫表中獲取該表“ value1和value2”中其他列的值。 我已經進行了大約5年的編程,但是之前從未需要操縱數據庫,所以我完全迷失了。
我在這里找到了更多圍繞更多線程的良好代碼和建議。 顯然,我的主要問題是表名中的空格,因此我刪除了表和代碼中的空格。 此代碼可將正確的值加載到組合框和復選框列表框中。 現在,我只需要從與已檢查列表相對應的行中加載值,然后將2個不同列中的值加載到2個不同字符串數組中即可。 這是我第一次使用數據庫,因此我對系統如何解釋我寫的內容迷失了。
private OleDbConnection myConn;
private OleDbDataAdapter dAdapter;
private DataViewManager dviewmanager;
private DataSet dset;
private OleDbConnection myConn2;
private OleDbDataAdapter dAdapter2;
private DataViewManager dviewmanager2;
private DataSet dset2;
private void cmbDatabaseFill()
{
string conStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=DB1.mdb";
try
{
myConn = new OleDbConnection(conStr);
myConn.Open();
}
catch (OleDbException ex)
{
MessageBox.Show("Error in connection ..." + ex.Message);
}
string sqlStr = "SELECT * FROM Index;";
dAdapter = new OleDbDataAdapter(sqlStr, myConn);
dset = new DataSet();
dAdapter.TableMappings.Add("Table", "Index");
dAdapter.Fill(dset);
this.dviewmanager = dset.DefaultViewManager;
this.cmbMain.DataSource = this.dviewmanager;
this.cmbMain.DisplayMember = "Index.List";
this.myConn.Close();
}
private void cmbMain_SelectedIndexChanged(object sender, EventArgs e)
{
clbDatabaseFill();
}
private void clbDatabaseFill()
{
string newTableName = cmbMain.Text.Replace(" ", "");
string conStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=DB1.mdb";
try
{
myConn2 = new OleDbConnection(conStr);
myConn2.Open();
}
catch (OleDbException ex)
{
MessageBox.Show("Error in connection ..." + ex.Message);
}
string sqlStr = "SELECT * FROM " + newTableName + ";";
dAdapter2 = new OleDbDataAdapter(sqlStr, myConn2);
dset2 = new DataSet();
dAdapter2.TableMappings.Add("Table", newTableName);
try
{
dAdapter2.Fill(dset2);
}
catch (System.Exception)
{
return;
}
this.dviewmanager2 = dset2.DefaultViewManager;
this.clbOpt.DataSource = this.dviewmanager2;
this.clbOpt.DisplayMember = newTableName + ".ValName";
this.myConn2.Close();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.