C#数据库在文本框中显示相关数据

时间:2014-05-05 17:44:48

标签: c#

我遇到了困难,如果有人能帮助我,我会很感激。

我有一个简单的MS Access数据库,它与我的程序相关联。我做的第一件事是用我的数据库中的一个字段填充一个组合框("产品描述")。

我想做的是当用户选择组合框中的项目时,记录中的所有其他字段都会显示在文本框中。

string sConnection;
        sConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" +
                        "Data Source=XYZDatabase.accdb";
        OleDbConnection dbConn;
        dbConn = new OleDbConnection(sConnection);
        dbConn.Open();
        cbxProducts.DisplayMember = "Product Description";
        dbConn.Close();

我考虑使用可能的SQL或DataReader,虽然我真的不确定。 这是我希望填充文本框的事件。我真的被困在这里。

private void cbxProducts_SelectedIndexChanged(object sender, EventArgs e)
    {          
        txtProductNumber.Text = 
        txtProductDescription.Text = 
        txtProductCategory.Text = 
        txtProductCost.Text = 
    }

我希望我没有把我的问题格式化错误或任何事情,如果我有道歉,这是我第一次在这里发帖! DX

1 个答案:

答案 0 :(得分:0)

我想知道您的组合框是否实际显示来自数据库的数据。

之后的第一个代码块中
dbConn.Open() 

之前

dbConn.Close() 

你应该有这样的代码:

SqlCommand sc = new SqlCommand("select prodid, proddesc from products", conn);
SqlDataReader reader;

reader = sc.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("prodid", typeof(string));
dt.Columns.Add("proddesc", typeof(string));
dt.Load(reader);

cbxProducts.ValueMember = "prodid";
cbxProducts.DisplayMember = "proddesc";
cbxProducts.DataSource = dt;

然后在第二个代码块中,您需要首先获取所选的产品ID。

private void cbxProducts_SelectedIndexChanged(object sender, EventArgs e)
{ 
    string ID = comboBox1.SelectedValue.ToString();

    //Based on ID make a sql query and fetch the details of that product from the DB. 
    //Follow the earlier code block to make DB connection and execute query.
    //Then populate the data in individual text boxes by looping through the dr.
    //I am leaving this deliberately for you to figure out and I am sure you can.

    txtProductNumber.Text = 
    txtProductDescription.Text = 
    txtProductCategory.Text = 
    txtProductCost.Text = 
}