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

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”。如下图所示:

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

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;

}

其结果如下图所示:
打开指定的Access表——Visual C#读取Excel和Access数据库