How do I bind a listbox or a combobox to a MDB file

Platform: WinForms| Category: Data Binding

You can use the classes in the System.Data.OleDb namespace to read a MDB file into a ListBox and a ComboBox. You instantiate a OleDbConnection object using a connection string to your MDB file. You then instantiate a OleDbDataAdapter that uses this connection object and a SQL query. Next you create a DataSet object, use the OleDbDataAdapter to fill this dataset, and finally attached this dataset to your control. Here is the code that does this.

	private void Form1_Load(object sender, System.EventArgs e)
	{
		// Set the connection and sql strings
			// assumes your mdb file is in your root
			string connString = @'Provider=Microsoft.JET.OLEDB.4.0;data source=C:\northwind.mdb';
			string sqlString = 'SELECT * FROM customers';

			// Connection object
			OleDbConnection connection = new OleDbConnection(connString);

			// Create data adapter object
			OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sqlString, connection);

			// Create a dataset object and fill with data using data adapter’s Fill method
			DataSet dataSet = new DataSet();
			dataAdapter.Fill(dataSet, 'customers');
			
			// Attach dataset’s DefaultView to the combobox
			listBox1.DataSource = dataSet.Tables['customers'].DefaultView; 
			listBox1.DisplayMember = 'CustomerID';

			// Attach dataset’s DefaultView to the combobox
			comboBox1.DataSource = dataSet.Tables['customers'].DefaultView; 
			comboBox1.DisplayMember = 'CustomerID';
    	}

Notice that this code uses the same dataset object for both the listbox and the combobox. When done in this manner, the two controls are linked so that the selection in one control will be the selection in the other control. If you edit an entry in the combobox, the same entry is the listbox is changed. To avoid this linkage, just have a second dataset object for your second control.

Share with

Related FAQs

Couldn't find the FAQs you're looking for?

Please submit your question and answer.