打开指定的Access表——Visual C#读取Excel和Access数据库

来源:互联网 发布:2017如何关闭淘宝店铺 编辑:程序博客网 时间:2024/06/11 01:48

 

Visual C#读取ExcelAccess数据库

 

三峡大学土木水电学院  肖泽云

 

Content  

一、读取Excel表格... 1

二、保存Excel文件... 5

三、获取表的名称... 6

四、打开指定的Excel表格... 8

五、读取Access数据库... 10

六、获取Access表信息... 12

七、打开指定的Access... 13

 

七、打开指定的Access

前面使用的Oledb方式都是打开Access文件中已知表名的表格,如果在不知道Access文件中表名的情况下要查看表格,则可以结合前面获取Access表格信息,来通过指定表名的方式打开指定的表。

首先,添加一个按钮,设置其Name为“打开Access文件button”,Text为“打开Access文件”;再添加一个按钮,设置其Name为“打开指定的Accessbutton”,Text为“打开指定的Access表”;添加一个ComboBox控件,设置其Name为“AccessComboBox”。如下图所示:

图片

1、打开指定的Access

首先在全局变量中定义Access的连接对象,如下:

private OleDbConnection accessOledbConnection;

然后在按钮“打开Access文件button”的Click事件中添加如下代码:

        private void 打开Access文件button_Click(object sender, EventArgs e)

        {

            OpenFileDialog openDG = new OpenFileDialog();

            openDG.Title = "打开Access数据库";

            openDG.Filter = "Access数据库(*.mdb)|*.mdb|所有文件(*.*)|*.*";

            openDG.ShowDialog();

            string filename;

            filename = openDG.FileName;

 

            DataTable table = new DataTable();

 

            string strConn

                = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";";

            accessOledbConnection = new OleDbConnection(strConn);

            accessOledbConnection.Open();

            table = accessOledbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

 

            AccessComboBox.Items.Clear();

            foreach (DataRow dr in table.Rows)

            {

                AccessComboBox.Items.Add((String)dr["TABLE_NAME"]);

            }

            AccessComboBox.Text = AccessComboBox.Items[0].ToString();  

        }

2、打开指定的Access

在按钮“打开指定的Accessbutton”的Click事件中添加如下代码:

        private void 打开指定的Accessbutton_Click(object sender, EventArgs e)

        {

            OleDbCommand oleDbCommand = accessOledbConnection.CreateCommand();

            oleDbCommand.CommandText = @"SELECT * FROM " + AccessComboBox.Text;

 

            DataTable table = new DataTable();

            DataRow dr;

            OleDbDataReader odrReader = oleDbCommand.ExecuteReader();

            //查询并显示数据   

            int size = odrReader.FieldCount;

            for (int i = 0; i < size; i++)

            {

                DataColumn dc;

                dc = new DataColumn(odrReader.GetName(i));

                table.Columns.Add(dc);

            }

            while (odrReader.Read())

            {

                dr = table.NewRow();

                for (int i = 0; i < size; i++)

                {

                    dr[odrReader.GetName(i)] = odrReader[odrReader.GetName(i)].ToString();

                }

                table.Rows.Add(dr);

            }

            //关闭连接   

            odrReader.Close();

            //oledbcConnection.Close();  

            dataGridView1.DataSource = table;

        }

其结果如下图所示:
图片