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. node.js动态调试

    supervisor node ./bin/www npm start 不会动态运行和调试程序,相当于动态部署

  2. 分页技术之GridView控件

    GridView控件实现分页技术 第一步:设置GridView控件的属性,跟分页相关的属性设置如下: AllowPaging="true":允许分页, PageSize=" ...

  3. JNI测试-java调用c算法并返回java调用处-1到20阶乘的和

    一,java端: 定义native方法, 'public native long factorial(int n);', 该方法用c/c++实现,计算'1到20阶乘的和',参数中'int n'是前n项 ...

  4. SQL批量信息保存(XML格式字符串数据)

    /* *功能:SQL批量信息录入 *此存储过程获取表单信息,插入表中.*/CREATE  PROC [dbo].[sp_SaveToMX1]@XML text   --明细表XML字符串信息ASBEG ...

  5. OC - 21.CALayer核心要点及实例解析

    CALayer基础 CALayer是每一个UI控件的核心,一个UI控件之所以能显示可以说是CALayer的功劳 每一个UI控件默认都为自己创建一个CALayer对象,通过drawRect方法将内容绘制 ...

  6. UIGestureRecognizer手势识别

    UIGestureRecognizer 1.#import "ViewController.h"2.3.@interface ViewController ()<UIGest ...

  7. ajax省市线三级联动

    <script type='text/javascript' src='http://ajax.useso.com/ajax/libs/jquery/1.7.2/jquery.min.js?ve ...

  8. 从零开始学java(小游戏 石头剪刀布)

    Game.java package com.java;import java.util.Scanner;public class Game {        private Player player ...

  9. Hibernate 性能优化之一级缓存

     1.一级缓存的生命周期     一级缓存在session中存放,只要打开session,一级缓存就存在了,当session关闭的时候,一级缓存就不存在了   2.一级缓存是依赖于谁存在的      ...

  10. C++变量的“总分性”(Mereology)

    Stroustrup 在自传中说自己在哲学上深受 Kierkegaard (吉爾凱高爾)的影响,而讨厌黑格尔.所以看 Stroustrup 的书,很少感受到抽象理论的重要性.这也影响了C++的文化:许 ...