using System;
using System.Data;
using System.Data.OleDb;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace A0150_Access.Sample
{

/// <summary>
/// 用于 访问 Access 数据库的例子.
///
///
/// </summary>
class ReadAccessDB
{

/// <summary>
/// Access 的数据库连接字符串.
/// </summary>
private const String connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\TeamMemberManager.mdb";

/// <summary>
/// 用于查询的 SQL 语句.
/// </summary>
private const String SQL = "SELECT member_type_code, member_type_name FROM team_member_type";

/// <summary>
/// DataSet 导出的文件
/// </summary>
private const String DATATABLE_XML_FILE = "datatable.xml";
private const String DATATABLE_SCHEMA_XML_FILE = "datatable_schema.xml";

/// <summary>
/// 将数据读取到 DataSet 中.
///
/// 这里演示了2种方式,一种是从数据库中读取,一种是从XML文件中读取.
///
/// 作为对比,还可以参考 A0210_DataSetXML 项目下的 DataSetReadXml 类,那里的读取方式,与这里有些差异。
/// </summary>
public void ReadDataToDataSet()
{

Console.WriteLine("使用DataAdapter,将数据填充到DataSet中,然后脱离数据库,直接对DataSet进行处理。");

// 建立数据库连接.
OleDbConnection conn = new OleDbConnection(connString);

// 创建一个适配器
OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, conn);

// 创建DataSet,用于存储数据.
DataSet testDataSet = new DataSet();

// 执行查询,并将数据导入DataSet.
adapter.Fill(testDataSet, "team_member_type");

// 关闭数据库连接.
conn.Close();

// 处理DataSet中的每一行数据.
foreach (DataRow testRow in testDataSet.Tables["team_member_type"].Rows)
{
// 将检索出来的数据,输出到屏幕上.
Console.WriteLine("ID: {0} Name: {1}",
testRow["member_type_code"], testRow["member_type_name"]
);
}

// 注意:
// 在通过 DataTable 的 WriteXml 方法来导出数据,给其他系统使用的时候
// 还需要使用 WriteXmlSchema 来导出 Schema
// 否则在使用 ReadXml 读取的时候, 会发生错误,因为新的 DataTable 不知道表的结构,不知道该如何去读取.
// 除非你手动设置好每个列的字段/数据类型等信息,那么 DataSet 或者 DataTable 将能够理解如何倒入,而不在需要 ReadXmlSchema
Console.WriteLine("将 DataTable 的数据,写入到 XML 文件中。");
testDataSet.Tables["team_member_type"].WriteXmlSchema(DATATABLE_SCHEMA_XML_FILE);
testDataSet.Tables["team_member_type"].WriteXml(DATATABLE_XML_FILE);

Console.WriteLine("从 XML 文件中,读取数据到 DataTable 里面。");
DataTable newDt = new DataTable();
newDt.ReadXmlSchema(DATATABLE_SCHEMA_XML_FILE);
newDt.ReadXml(DATATABLE_XML_FILE);

// 输出 DataTable 信息。
foreach (DataRow testRow in newDt.Rows)
{
// 将检索出来的数据,输出到屏幕上.
Console.WriteLine("ID: {0} Name: {1}",
testRow["member_type_code"], testRow["member_type_name"]
);
}
}

/// <summary>
/// 通过 Reader, 依次读取每一条数据.
/// </summary>
public void ReadDataByReader()
{
Console.WriteLine("使用DataReader,逐行对查询结果进行处理。[处理过程必须保持数据库连接正常]");

// 建立数据库连接.
OleDbConnection conn = new OleDbConnection(connString);

// 打开连接.
conn.Open();

// 创建一个 Command.
OleDbCommand testCommand = conn.CreateCommand();

// 定义需要执行的SQL语句.
testCommand.CommandText = SQL;

// 执行SQL命令,结果存储到Reader中.
OleDbDataReader testReader = testCommand.ExecuteReader();

// 处理检索出来的每一条数据.
while (testReader.Read())
{
// 将检索出来的数据,输出到屏幕上.
Console.WriteLine("ID: {0} Name: {1}",
testReader["member_type_code"], testReader["member_type_name"]
);
}

// 关闭Reader.
testReader.Close();

// 关闭数据库连接.
conn.Close();

}

}

C# 读取 Access 数据库表的例子的更多相关文章

  1. java读取ACCESS数据库的简单示例

    java读取ACCESS数据库的简单示例 虽然简单,对初学者来说,如果没有一段可以成功执行的代码供参考,还真难调试 先用ACCESS建一个数据库 DB1.MDB,里面有一表"table1&q ...

  2. java通过Access_JDBC30读取access数据库时无法获取最新插入的记录

    1.编写了一个循环程序,每几秒钟读取一次,数据库中最新一行数据 连接access数据库的方法和查询的信息.之后开一个定时去掉用. package javacommon.util; import jav ...

  3. php读取access数据库

    <?php //读取mdb数据库 $conn = new com("ADODB.Connection"); $connstr = "DRIVER={Microsof ...

  4. 创建数据库,创建数据库表,例子。MySQL语句

    1.创建数据库:    创建的代码:create  数据库的代码:database   数据库表名:随便起,只要自己记住就行.test create database test; 2.删除数据库: 删 ...

  5. access数据库表导入到oracle

    1.本机安装access数据库 25M左右2.创建ODBC数据源,要选择oracle C:\Windows\SysWOW64\odbcad32.exe 3.打开要导入的 .mdb文件 右键表--> ...

  6. 【.Net 学习系列】-- Windows身份模拟(WindowsIdentity.Impersonate)时读取Access数据库

    参考资料: WindowsIdentity.Impersonate https://msdn.microsoft.com/zh-cn/library/w070t6ka(v=vs.110).aspx A ...

  7. 创建access数据库表demo的封装

    1.创建类 public void CreateBiao(ADOX.Catalog catlog,ADOX.Table table) { //StuId Column(AutoIncrement ) ...

  8. asp.net读取Access数据库。

    注:数据库(表名 job  id 工作id ,job工作字段) 数据库放在app_data文件中.名称为database.mdb 如果用codesmith生成,选择的数据库连接类型如下图: 项目结构图 ...

  9. 利用ADO让普通人用excel读取oracle数据库表的通用办法

    Ref:http://blog.csdn.net/iamlaosong/article/details/8465177 Excel通过ADO方式连接到Oracle并操作Oracle给那些编程能力不强的 ...

随机推荐

  1. 从服务器将Oracle数据库导出到本地Oracle数据库的方法

     1.将服务器上的Oracle数据库导入到本地 在CMD模式下执行以下命令:   exp username1/password@服务器端数据库 file=本地硬盘:/文件名.dmp   例如: exp ...

  2. C#串口控制

    串行口是计算机的标准接口,现在的PC机(个人电脑)一般至少有两个串行口COM1和COM2.串行口应用广泛,在数据通信.计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息.本节通过几个 ...

  3. 【USACO 1.5.2】回文质数

    [题目描述] 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,0 ...

  4. 花非花-记一次linux上运行时报找不到库函数错误

    简介: --->:表示依赖 exe ---> a.so ---> utility.so 问题描述: exe运行起来报a.so中的函数f未定义. 解决过程: 一·nm a.so nm ...

  5. MySQL Server 5.6 解压版安装配置

    MySQL解压版下载地址为: http://dev.mysql.com/downloads/mysql/5.6.html#downloads 安装及配置步骤: ①将MySQL的zip包解压到路径C:\ ...

  6. 挂载NTFS

    1.安装ntfs-3g wget https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2015.3.14.tgz --no-check-certificat ...

  7. ORACLE数据库多表关联查询效率问题解决方案

    最近在做项目中遇到多表关联查询排序的效率问题(5张以上40W+数据的表),查询一次大概要20多秒,经过一番苦思冥想,处理方案如下: 1.软件设计初期,需要一对一关联的表应该设计在一张大表里,这样虽然字 ...

  8. sql中关于case when的一个例子

    SELECT rownum R, a.expert_id as USERID, a.expert_id as TYPE, b.type_desc as TYPE_DESC, a.sex as SEX, ...

  9. P1066 2^k进制数

    传送门 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进 ...

  10. 我的Jekyll博客

    我在GitHub Page上托管的Jekyll博客地址:http://lastavenger.github.io/