转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
使用C#语言操作ADO数据库         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:617 更新时间:2009/4/23 10:50:53

访问数据库是大多数应用程序的一部分,而且随着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#动态创建Access数据库  [Web开发]asp 在线备份与恢复sqlserver数据库代码详解
[电脑应用]教你如何远程管理MSSQL数据库  [其他]关于数据库优化查询计划的方法总结
[电脑应用]Linux数据库大比拚  [JAVA开发]Java连接各种数据库的实例
[聊天工具]QQ IP数据库Build 0825 纯真版__天极Yesky  [系统软件]利用crontab系统每天定时备份MySQL数据库
[系统软件]备份与恢复Windows2003的AD数据库  [常用软件]活用FlashGet数据库
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台