读取Access数据库、获取Access表信息——Visual C#读取Excel和Access数据库
Visual C#读取Excel和Access数据库
三峡大学土木水电学院 肖泽云
Content
五、读取Access数据库
读取Access数据库也可以通过Oledb的方式来实现,其方式和读取Excel文件类似,主要分为六步:1、建立连接;2、打开连接;3、建立SQL查询;4、输入查询语句;5、查询并显示数据;6、关闭连接。如果已知Access文件中的表名,则可以直接通过查询语句从该表中获取数据。如下代码:
private void 读入Access数据库_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();
DataRow dr;
//1、建立连接
string strConn
= @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";";
OleDbConnection odcConnection = new OleDbConnection(strConn);
//2、打开连接
odcConnection.Open();
//3、建立SQL查询
OleDbCommand odCommand = odcConnection.CreateCommand();
//4、输入查询语句
odCommand.CommandText = @"SELECT * FROM sz_fcd";
OleDbDataReader odrReader = odCommand.ExecuteReader();
//5、查询并显示数据
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);
}
//6、关闭连接
odrReader.Close();
odcConnection.Close();
dataGridView1.DataSource = table;
}
如果只需要获取表中的某个字段数据,则可以通过修改SQL查询语句来实现,如只需要获取GPSX和GPSY这两个字段,则修改查询语句为:
odCommand.CommandText = @"SELECT GPSX,GPSY FROM sz_fcd";
如果要获取表中符合某个添加的数据,如字段GPSID值为163的所有数据,则修改查询语句为:
odCommand.CommandText = @"SELECT * FROM sz_fcd where GPSID=163";
如果要获取表中的数据并按某个添加排列,可以通过Order来指定,如指定数据按GPSID作为主排列,GPSYEAR、GPSMONTH、GPSDAY为次排列,则修改查询语句为:
odCommand.CommandText = @"SELECT * FROM sz_fcd Order by GPSID,GPSYEAR,GPSMONTH,GPSDAY";
六、获取Access表信息
同样通过Oledb方式可以获取Access表信息,这些信息包括表名称、表类型等等。如下代码:
private void 获取Access表信息_Click(object sender, EventArgs e)
{
OpenFileDialog openDG = new OpenFileDialog();
openDG.Title = "打开Access数据库";
openDG.Filter = "Access数据库(*.mdb)|*.mdb|所有文件(*.*)|*.*";
openDG.ShowDialog();
string filename;
filename = openDG.FileName;
OleDbConnection oledbConnection;
string strConn
= @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";";
oledbConnection = new OleDbConnection(strConn);
oledbConnection.Open();
DataTable table = new DataTable();
table = oledbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
dataGridView1.DataSource = table;
}
其结果如下图所示: