使用C#语言操作ADO数据库

原创 2003年10月16日 09:39:00

访问数据库是大多数应用程序的一部分,而且随着C#和ADO.NET的发布,这个过程已经变得相当的简单.本文将展示下面四个基本的数据库操作:

1.读数据.这包括诸如整数,字符串和日期等不同的数据类型.
2.写数据.就象读数据一样我们会写这些通常的数据类型.这是通过SQL语句来实现的.
3.更新或是修改数据.我们还是使用简单SQL语句.
4.删除数据.使用SQL.


这些操作是对一个微软Access 2000数据库进行的,但是SQL或是其它ADO数据源可以通过简单的改变连接字符串来使用.

开始第一步
为了使用ADO类,我们需要包括进ADO.NET命名空间(namespace)和一些精巧的日期类.在你要进行数据库操作的地方加入下列几行代码.它应该被放置在命名空间引入代码行的下面而在类定义的上面.

using System.Data; // 申明变量
using System.Data.ADO; // 数据库
using System.Globalization; // 日期

根据你所参与的工程的类型,你可能需要增加对System.Data命名空间的引用.你可以根据在你添加上面的代码以后编译器是否产生错误来判断.要添加System.Data命名空间,你可以:
1.在Solution explorer-References 分支中右键单击.
2.选择"添加引用"
3.选择.NET Framework标签.
4.双击System.data.dll条目
5.单击OK
6.System.Data现在应该出现在了Solution explorer的引用列表中了.

因为连接字符串在大多数操作中都要使用,所以我建议你将它设置成你要编写的类的成员.注意:在你的程序中,数据库文件的路径有可能不同.

//属性
public const string DB_CONN_STRING =
"Driver={Microsoft Access Driver (*.mdb)}; "+
"DBQ=D://CS//TestDbReadWrite//SimpleTest.mdb";


读数据
现在一切都变得有趣起来.读数据可以通过ADODataReader类来实现.(参看Chris Maunder的文章"ADO.NET ADODataReader类"来获取关于这个类的更多信息.)读数据的步骤如下:

1.我们用ADOConnection来打开一个数据库.
ADOConnection conn =
new ADOConnection(DB_CONN_STRING);
conn.Open();
2.我们编写一个SQL语句来定义将要取出的数据.这个数据执行的结果是返回一个ADODataReader 对象.注意Execute方法中的out关键字.这在C#中意味着通过引用传递参数.

ADODataReader dr;
ADOCommand cmd =
new ADOCommand( "SELECT * FROM Person", conn );
cmd.Execute( out dr);

3.我们循环遍历ADODataReader中的每一个记录直到我们完成要做的工作.注意:数据被直接作为一个字符串返回同时数据域名称用来指明读的数据域.
while( dr.Read() )
{
System.Console.WriteLine( dr["FirstName"] );
}
4.我们收工
但是,作为好的程序员我们还需要加进许多try/catch/finally语句来确保我们处理了所有的错误.
try
{
.... 数据库操作 ...
}
catch( Exception ex )
{
System.Console.WriteLine( "READING:" );
System.Console.WriteLine( " ERROR:" + ex.Message );
System.Console.WriteLine( " SQL :" + sSqlCmd );
System.Console.WriteLine( " Conn.:" + DB_CONN_STRING );
}
finally
{
// 关闭连接
if( conn.State == DBObjectState.Open )
conn.Close();
}


读取不同的数据类型
dr["stuff"]这个语句通常能够返回一个数据.但是要返回一个int或者DateTime对象的话通常需要进行数据转换.这通常可以通过使用ADODataReader许多内建转换器中的一个来实现.也就是:

int nOrdinalAge = dr.GetOrdinal( "Age" );
int nAge = dr.GetInt32( nOrdinalAge );

DateTime tUpdated = (DateTime)dr["Updated"];

注意GetOrdinal定位数据域用名字来读取数据的用法.如果数据域是空白的(还没有填入任何数据),上面的代码会抛出一个异常.要捕捉这种情况,我们可以用IsNull方法检查是否有数据存在,如下所示:

int nOrdinalAge = dr.GetOrdinal( "Age" );
if( dr.IsNull( nOrdinalAge ) )
{
System.Console.WriteLine( " Age : Not given!" );
}
else
{
int nAge = dr.GetInt32( nOrdinalAge );
System.Console.WriteLine( " Age : " + nAge );
}


插入,修改,删除和其他SQL命令
插入,修改,删除过程可以非常容易的通过SQL语句来实现.下面的代码执行一条SQL命令来插入一条记录.

// SQL 命令
String sSQLCommand =
"INSERT INTO Person (Age, FirstName, Description, Updated) " +
"VALUES( 55, ’Bob’, ’Is a Penguin’, ’2001/12/25 20:30:15’ );";
// 创建command对象
ADOCommand cmdAdder = new ADOCommand(
sSQLCommand,
DB_CONN_STRING);
cmdAdder.ActiveConnection.Open();
// Execute the SQL command
int nNoAdded = cmdAdder.ExecuteNonQuery();
System.Console.WriteLine(
"/nRow(s) Added = " + nNoAdded + "/n" );

注意:try/catch代码没有在上面的例子里出现,但是应该包括上面的代码.

插入
上面的代码通过建立一个SQL命令然后执行它来插入一条记录.一些在编写SQL命令时应注意的事项如下:
1.数值数据应该直接表示.没有单引号(’).
2.字符串的表示应该包括在单引号中(’blah’).
3.确保字符串中不包含任何嵌入的单(双)引号.这会使事情混淆.
4.日期和时间数据用包裹在单引号中的国际通用形式来表示(’YYYY/MM/DD HH:MM:SS’).

修改

UPDATE命令指明要修改的数据和修改的动作.ExecuteNonQuery()的返回值指出改变的记录的个数,所以如果有5个Peter’s在表单中的话下面的代码将返回5.
String sSQLCommand =
"UPDATE Person SET Age = 27 WHERE FirstName = ’Peter’";

删除
DELETE命令指明要删除的记录.ExecuteNonQuery()的返回值指出改变的记录的个数,所以如果有2个Bobo在表单中的话下面的代码将返回2.两个Bobo都会被删除.

String sSQLCommand =
"DELETE FROM Person WHERE FirstName = ’Bobo’";

c#操作sql server数据库(ADO.net基础)

using (SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0; AttachD...
  • u011982340
  • u011982340
  • 2014年09月18日 22:57
  • 2727

C# ADO操作Access数据库

C#操作Access数据库,包括创建数据库,创建表,设置主键,增加数据,查询数据的操作! 实例代码下载:http://download.csdn.net/detail/qq_23992597/9520...
  • qq_23992597
  • qq_23992597
  • 2016年05月16日 11:04
  • 1199

MFC中利用ADO对数据库进行简单操作的实例

目标:实现对数据库中的数据进行简单地操作,包括增、删、改、查。 第一步,创建一个基于对话框的应用程序,命名为TestAdo 第二步,按照图1的界面布局添加控件...
  • shufac
  • shufac
  • 2014年04月16日 22:37
  • 3884

一个简单的ADO.NET C# 数据库操作实例

本篇文章以 ADO.NET 访问SQL SERVER 数据库为例,介绍一下ADO.NET C# 对数据库的操作语法。连接其他数据库时,可能语法上稍微有一点点差别,但步骤与SQL SERVER 想类似。...
  • shuai_wy
  • shuai_wy
  • 2017年07月12日 16:38
  • 1901

ADO数据库的操作

导入动态链接库 在使用ADO技术时,需要导入一个ADO动态链接库msado15.dll,该动态链接库位于系统盘的 “Program Files\Common Files\System\ado\”目...
  • yhrun
  • yhrun
  • 2012年03月10日 11:42
  • 2048

MFC ADO方法实现SQL Server数据库编程(转载)(2014-05-18)

之前在做数据库方面的编程学习的过程中,发现很多的知识细节不是很清楚,通过查了很多的资料,也走了不少的弯路。觉得有必要整理一下这方面的知识,一方面,可以为自己的学习做记录;另一方面,可以给初步学习MFC...
  • youhx555
  • youhx555
  • 2014年05月18日 10:37
  • 1029

使用C#语言操作ADO数据库

访问数据库是大多数应用程序的一部分,而且随着C#和ADO.NET的发布,这个过程已经变得相当的简单.本文将展示下面四个基本的数据库操作:  1.读数据.这包括诸如整数,字符串和日期等不同的数据类型. ...
  • s4gg
  • s4gg
  • 2006年11月01日 13:03
  • 623

MFC使用ADO操作SQLSERVER数据库

首先,要引入msado15.dll库文件,该文件是ADO操作的库: #import "C:\ProgramFiles\Common Files\System\ado\msado15.dll" n...
  • yangbingzhou
  • yangbingzhou
  • 2014年04月17日 21:01
  • 2017

MFC中ADO方式操作数据库实例

连接ACCESS为例:  C++代码   //头文件   #pragma once           #include "math.h"           #im...
  • u011135902
  • u011135902
  • 2015年04月15日 18:08
  • 550

用ADO连接SQL Server数据库

这篇文章不是介绍ADO连接数据库的原理的,而是写一下连接的步骤和简便方法。 一、获取连接字符串。 连接数据库时需要用到  _ConnectionPtr  对象的open方法,参数如下: HRES...
  • zhangkaihang
  • zhangkaihang
  • 2012年04月25日 18:23
  • 17706
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用C#语言操作ADO数据库
举报原因:
原因补充:

(最多只允许输入30个字)