C#将数据从MS Access数据库加载到列表框

时间:2015-09-26 05:24:52

标签: c#

public partial class Form1 : Form
{
    OleDbCommand cmd = new OleDbCommand();
    OleDbConnection cn = new OleDbConnection();
    OleDbDataReader dr;
    public Form1()
    {
        InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        cn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\AsusK450c\documents\visual studio 2010\Projects\ADD\ADD\testing.accdb;Persist Security Info=True";
        cmd.Connection = cn;
        loaddata();

    }
    private void loaddata()
    {
        listBox1.Items.Clear();
        listBox2.Items.Clear();
        try
        {
            string q = "select * from info";
            cmd.CommandText = q;
            cn.Open();
            dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    listBox1.Items.Add(dr[0].ToString());
                    listBox2.Items.Add(dr[1].ToString());
                }
            }
            dr.Close();
            cn.Close();

        }
        catch (Exception e)
        {
            cn.Close();
            MessageBox.Show(e.Message.ToString());
        }
    }
}

这是数据库的图像: enter image description here

enter image description here

我添加了2个列表框。这两个应该显示我放在数据库中的数据,但事实并非如此。我不知道哪个是错的,路径,代码或数据库

2 个答案:

答案 0 :(得分:1)

您的代码没有任何问题。检查您是否收到任何异常或指向正确的数据库。

同时检查您是否已将 Form1_Load()功能分配给表单的加载事件

enter image description here

答案 1 :(得分:0)

我不确定您的问题是什么,但您可以通过这种方式更改connectionString:

System.Data.OleDb.OleDbConnectionStringBuilder builder = new System.Data.OleDb.OleDbConnectionStringBuilder();
            builder.Provider = "Microsoft.ACE.OLEDB.12.0";
            builder.OleDbServices = -1;
            builder.DataSource = @"C:\Users\AsusK450c\documents\visual studio 2010\Projects\ADD\ADD\testing.accdb";
            cn.ConnectionString = builder.ConnectionString;

OleDbServices = -1可以帮到你。