C#中如何用程序代码来提取和存入数据

15 篇文章 0 订阅
14 篇文章 0 订阅

命名空间System.Data.Oledb的是.NET Framework Data Provider for OLE DB。可用来存取OLE DB数据源。使用OleDbDataAdapter,配合内存的DataSet,可以查询及更新数据源。ADO.NET的DataRaeder对象能读取数据库记录;DataAdarter能从数据源提取数据,并填入DataSet的数据表。
如果要用C#程序代码来编写,要如何着手呢?
1.导入相关的命名空间
要链接数据库,第一个要确认数据库类型。.NET Framework Data Provider的用途是来连接数据库,执行命令和提取结果。共有四个:
(1).NET Framework Data Provider for SQL Server:适用于Microsoft Sql Server 7.0 以后的版本,使用System.Data.SqlClient命名空间。
(2).NET Framework Data Provider for OLE DB :适用于Access数据库,使用System.Data.OleDb命名空间。System.Data.OleDb命名空间的常用类如表所示:

OleDbCommand针对数据源执行的SQL语句或存储过程
OleDbConnection建立数据源的链接
OleDbDataAdpter数据命令级和数据库连接,用来填入DataSet并更新数据源
OleDbDataReader提供数据源读取数据行的方法

(3).NET Framework Data Provider for ODBC :适用于ODBC数据源的中介应用程序,使用System.Data.Odbc命名空间
(4).NET Framework Data Provider for Oracle:适用于Oracle数据库,支持Oracle客户端软件8.1.1(含)以后版本,使用Syatem.Data.OracleClient命名空间。
创建项目后,若是连接Access数据库,则必须导入”System.Data.OleDb"命名空间
using Syatem.Data.OleDb;
2.用Connection对象连接数据库
不同数据库需要不同的Connection对象,Access数据库使用OLE DB 所以要用.NET Framework数据提供程序 的OleDbConnection对象来创建连接,其构造方法如下:
public OleDbConnection(string connectionString);
connectionString:用来打开数据库的连接
所以要用OleDbConnection类来创建对象并指定链接的字符串。

//创建OleDbConnection对象conn,并指定连接字符串
OleDbConnection conn;
conn = new OleDbConnection(connString);

connSrting 为指定数据源的连接字符串,以Access数据库而言,会有以下两种概况:

connString = "Provider=Microsoft.Jet.OLEDB.4.0 ;"  + "Data Source=C:\bin\LocalAccess40.mdb";  //旧版Access
connString = "Provider=Microsoft.Ace.OLEDB.12.0 ;"  + "Data Source=D:\VBDemo\CH17\Loan.accdb";  //新版Access

DataSource属性:数据源,用来指出Access数据库的文件路径。
不同的数据源属性,须以”;“(分号)字符分隔开
完成Connection对象的创建后,用Open方法来打开数据库
conn.Open();
OleDbConnection类的常用成员

ConnectionTimeOut产生错误前尝试终止连接的等待时间
Database获取或设置要链接的数据库名称
DataSource获取或设置要连接的数据源名称
Provider获取连接字符串“Provider =”子句指定的OLE DB提供者名称
Close()关闭OLE DB数据库的连接
Dispose()释放OleDbConnection所占用的资源
Open()打开OLE DB数据库的连接

3.创建Command对象,执行SQL语句
Command对象能用来执行相关的SQL语句。Command对象主要是通过两个方式来执行SQL语句:ExecuteReader方法要搭配DataReader使用,将SQL语句查询所得结果以DataReader来提取;ExecuteNonQuery方法不返回数据记录,但可以返回变动的数据笔数,例如使用INSERT或UPDATE语句等。用OleDbCommand类来创建Command对象,要先了解其构造函数:

OleDbCommand(String)
OleDbCommand(String,OleDbConnection)
OleDbConnection(String,OleDbConnection,OleDbTransaction)

Strng:为SQL语句
OleDbConnection:数据库的连接对象
OleDbTransaction:执行的数据库操作
例如:要用OleDbCommand对象去获取”Reader"数据表的所有内容。

OleDbCommand cmd ; //创建OleDbCommand对象cmd
//SQL语句:获取Reader数据表的所有记录
sqlShow ="SELECT * FROM Reader";
//OleDbConnection对象
cmd = new OleDbCommand(sqlShow,conn);
                OleDbCommand类的成员
CommandText获取或设置数据源的SQL语句或存储过程
CommandTimeout获取或设置错误产生前的等待时间
CommandType获取或设置CommandText属性的解译方法
Connetion获取或设置OleDbCommand所使用的OleDbConnecton
Parameters获取OleDbParameterCollection
Transaction获取或设置OleDbTransactoin,执行其中的OleDbCommand
Cancle()用来尝试取消OleDbCommand的执行

产生Command对象,用DataReader对象调用“Command.ExecuteReader“提取数据源的记录,然后由Datader对象显示查询的结果。

OleDbDataReader rdDisplay;
rdDisplay = cmd.ExecuteReader;

Execute()方法

ExecuteReader返回DataReader对象
ExecuteScalar从数据表获取单一字段数据,通常是第一笔记录第一个字段
ExecuteNonQuery执行SQL语句,但不会返回任何记录

4.用DataReader对象获取查询结构**
用SQL语句执行查询时,会将结果一直存储在客户端的网络缓冲区,直到使用DataReader的Read()方法读取他们为止。由于可以立即提取可用的数据,而一次只将一个数据行存储到内存中,因此DataReader可以提高应用程序的性能,减少系统的负荷。DataReader对象用来读取数据源的数据流。
如何读取DataReader对象的内容?可通过while循环或 Do while配合DataReader提供的read()方法,一次读取一个记录。先以for循环获取要读取数据表的栏数(即字段数),将数据输出。
范例 以连接字符串读取数据表内容
创建Windows窗体,项目名称为 ”CH1505a"。加入控件Button,其属性Name设置为“btnAccess",Text设置为“打开Access数据库”TextBox的属性Name设置为“txtDbShow"
用鼠标双击”打开Access数据库”按钮,进入程序代码编辑区(Form1.cs)编写以下程序代码

private void btnAcccess_Click(object sender,EventArgs)
{
     //步骤2——创建连接Access数据库的相关对象
     OleDbConneection conn;/数据库的连接对象
     OleDbCommand  cmd;//执行SQL语句的Command对象
     OleDbDataReader rdDisplay;
     string connStrong,sqlText;
     //创建链接字符串
     connString = "Provider=Microsot.ACE.OLEDB.12.0;" + @"Data  Source = F:\Visual  C# 2013  Demo\Easy\CH15.accdb";(这里是我数据库的存放路径)
     conn.Open();  //打开数据库
     //步骤3——以Commmand对象cmd执行SQL语句,读取所有字段
     sqlText = "SELECT * FROM 系所";
     //获取SQL语句
     cmd= new OleDbCommand(sqlText,conn);
     //步骤四——将查询结果用DataReqader来显示
     rdDisplay=cmd.ExecuteReader();
     string result = "";
     //以for循环先读取字段名,暂时存放在result变量中
     for(int ct=0;ct<rdDissplay.FiledCount;ct++)
     {
              result+=rdDisplay.GetName(ct)  +  "\t";
}
result+=Eniveronment.NewLine;
result+="------------------------------------------------------------\n";
result+=Eniveronment.NewLine;
//读取每一笔记录
while(rdDisplay.Read())
{
    for(int  ct = 0;ct<rdDisplay.FieldCount;ct++)
    { 
    result+=
    rdDisplay[ct].ToString()  +  "\t";

}
result +=Eniveronment.NewLine;
}
rdDisplay.Close();//关闭数据表的读取
conn.Close();//关闭数据库
txtDbShow.Text=result;
}

5.DataAdapter载入数据
DataAdapter对象扮演“数据配送器”的角色,是数据源与DataSet之间的中介,将SQL命令的运行结果填入DataSet并梗新数据源。
如何使用DataAdapter,程序如下:
先创建Cinnection对象来连接并打开数据库
再用DataAdapter对象执行SQL语句,将所得数据存入DataSet.例如,创建对象dsShow,通过OleDbDataAdapter构造函数传入参数sqlText(SQL语句)和conn对象。

OleDbDataAdapter dsShow;
dsShow = new OleDbDataAdapter(sqlText,conn);

指定数据绑定的对象,用Fill方法加载DataSet对象,并指定控件的“DataSource"属性,显示数据内容。

DataSet ds = new DataSet();
dsShow.Fill(ds,"Reader")   //将Reader数据表载入
dgvReader.DataSource = ds.Tables["Reader"].DefaultView
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值