作者:李阳 http://oraasp.vicp.net/article/article.aspx?ID=21

数据库访问是程序中应用最普遍的部分。随着C#和ADO.NET的引入,这种操作变得更简单。这篇文章将示范四种最基础的数据库操作。

● 读取数据。其中包括多种数据类型:整型,字符串,日期型。

● 写数据。如读数据一样,我们也需要写入多种类型的数据。这可以通过SQL语句来完成。

● 更新或修改数据。我们将再次用到SQL语句。

● 删除数据。用SQL实现。

上述的操作都要基于Microsoft Access 2000数据库,但是,我们要对连接字符串进行简单的修改才能使用SQL或其他ADO数据。

开始操作

在使用ADO类之前,我们将把ADO.NET的命名空间和一些常用数据类包括进来。把下面的代码加入到你想进行数据库操作的地方。它的具体位置应该是命名空间行之后,类声明之前。

using System.Data; // State variables
using System.Data.ADO; // Database
using System.Globalization; // Date 

你或许还要向System.Data命名空间添加参数,这取决于工程的类型需要。你所添加的代码的编译信息会提醒你这一点。添加System.Data命名空间的操作:

● 右键点击Solution explorer--参数选项;
● 选择添加参数;
● 选择.NET框架栏;
● 双击System.data.dll条目;
● 选择OK;
● System.data应该出现在Solution explorer的参数列表中了。

由于在多数操作中都会使用连接字符串,所以我建议你将它包含在使用的类中。

注意:程序中数据库文件的路径可能和下面不一样:

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

读取数据

现在的操作就比较有趣了。读是通过ADODataReader类完成的(参看Chris Maunder的文章"The ADO.NET ADODataReader CLASS" 以了解更多)。读的操作步骤如下:

● 用ADO连接打开数据库

ADOConnection conn = new ADOConnection(DB_CONN_STRING);
conn.Open(); 

● 创建一个SQL语句来确认要获取的数据。这条命令执行后返回一个ADODataReader对象。注意Execute方法中的OUT关键字。这是C#中传递参数的方式。

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

● 循环遍历ADODataReader中的每条记录,直到完成。注意:数据被作为字符串直接返回。字段名显示了要读取的字段。

while( dr.Read() )
{
System.Console.WriteLine( dr["FirstName"] );
} 

● 清除

但是,作为优秀的程序员我们应该将代码放在try/catch/finally 中,确保我们能够控制所有意外。

try
{
.... the database operations ...
}
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
{
// Close the connection
if( conn.State == DBObjectState.Open )
conn.Close();
}

读取不同的数据类型

["stuff"]通常可以返回某个类型的字符串。但是要获取一个整型或DateTime对象,就需要列出这些数据。以一个简单的例子或是ADODataReade内建的很多例子中的一个就可以说明。例如:

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 command
String sSQLCommand = "INSERT INTO Person (Age, FirstName, Description, Updated) " +
"VALUES( 55, 'Bob', 'Is a Penguin', '2001/12/25 20:30:15' );";
// Create the command object
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语句插入一条记录。这条命令稍后执行。命令格式中需要注意的是:

● 数值直接赋值,不同单引号(');
● 字符串必须用单引号括起来 ('blah');
● 字符串中不能包含任何单引号或是双引号;
● 日期和时间都要以国际格式包括在单引号中。('YYYYY/MM/DD HH:MM:SS')

修改

UPDATE命令指示了要被修和已做修改的记录。ExecuteNonQuery()返回的值显示变化的纪录的数目,这样如果在表格中有5个Peter那它就会返回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'"; 

关于样例程序

样例是个简单的控制程序,它执行Microsoft Access数据库中提供的所有操作。在Visual Studio.NET IDE将TestDbReadWrite.csproj 作为工程文件打开就可以编译它。在MainConsole.cs中改变DB_CONN_STRIN的值,让其指向SimpleTest.mdb,编译它。

结论

现在你可以在C#中执行基础数据库操作了。找时间学学SQL,也要多读些有关它工作原理的文章。如果你感到厌倦了,到www.mctainsh.com上去看一下更新的代码。

用C#对ADO.NET数据库完成简单操作相关推荐

  1. Python --链接MYSQL数据库与简单操作 含SSH链接

    项目是软硬件结合,在缺少设备的情况,需要通过接口来模拟实现与设备的交互,其中就需要通过从数据库读取商品的ID信息 出于安全考虑  现在很多数据库都不允许通过直接访问,大多数是通过SSH SSH : 数 ...

  2. python连接到SQList数据库以及简单操作

    python连接到SQList数据库以及简单操作 背景了解: Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用.Python定义了一套操作数据库 ...

  3. mysql和foxbase_Mysql使用基础知识和MYSQL数据库的简单操作 -(转)

    Mysql使用基础知识 有很多朋友虽然安装好了mysql但却不知如何使用它.在这篇文章中我们就从连接MYSQL.修改密码.增加用户等方面来学习一些MYSQL的常用命令. 一.连接MYSQL.格式:my ...

  4. mysql数据库的简单操作

    一.启动mysql服务 1.启动mysql服务 win+R键打开运行,输入services.msc打开本地服务,找到MySQL,进行启动.停止等操作. 2.连接mysql 1.win+R键打开运行,输 ...

  5. 03_Influxdb数据库的简单操作

    目录 1.influxdb数据库操作 2.measurement(类似于表)操作 3.influxdb常用查询和删除操作 4.influxdb中数据保留时间的设置 5.influxdb使用易看的时间格 ...

  6. Android 中短信数据库的简单操作

    Android APK操作短信数据时,不能使用SQLHelper直接操作,需要使用协议,协议使用Uri转义 content://sms/inbox         收件箱  content://sms ...

  7. mysql数据库的简单操作-1

    数据库: 数据库,简而言之可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数据运行新增.截取.更新.删除等操作.所谓"数据库"系以一定方式储存在一起.能予多个用户共享 ...

  8. 实训09.11:数据库一些简单操作

    new Database 新建数据库 new Table 新建表 utf-8 编码格式 primary key 主键:特点:在表中是唯一的不可重复的,一般都是学号,编号 auto increment ...

  9. SQL Server Management Studio备份数据库的简单操作步骤

    看图说话 数据库工具 导出备份 选择完保存路径直接确定即可 引入备份 选择好之后确定即可

最新文章

  1. rancher部署项目Validation failed in API: Deployment.apps“”must be no more than 63 characters问题原因及解决方法
  2. CSS中实现DIV容器垂直居中
  3. github初次使用
  4. C# WinForm开发系列 - DataGrid/DataGridView
  5. 信息安全技术 网络安全等级保护测评要求_【诚资讯】等保2.0版本出炉!信息安全技术 网络安全等级保护基本要求正式发布...
  6. Python3 爬虫爬取中国图书网(淘书团) 记录
  7. 悉尼一船只引擎爆炸男子被迫跳水:严重烧伤被送医
  8. Linux-sed command
  9. MSRCRGIMP(基于GIMP版本的多尺度Retinex)
  10. Julia的Dates库是重要和必要的补充!
  11. Qt::QWidget 无默认标题栏边框的拖拽修改大小方式
  12. 【教程】Android系统手机 菜鸟扫盲汇总
  13. Tushare 简介与使用
  14. 2020最新省市区县编码
  15. 大数据时代 无处安放的隐私数据
  16. javaSE基础全覆盖
  17. Fibo Rule决策引擎应用实践
  18. 利用screen命令将程序挂在linux后台
  19. 74、单元测试-前置条件
  20. JPEG2000图像压缩算法学习

热门文章

  1. 记java关键词_Java关键词及含义
  2. ROS系统开发——ROS,realsense风险和解决方案备忘录
  3. CMake结合PCL库学习(2)
  4. Vue项目中使用wangEditor富文本输入框(推荐)
  5. Angular1.4.6框架简单读取数据库信息并渲染完成news新闻文章列表以及detail详情页功能(小试牛刀)
  6. 在阿里云ECS服务器上面开启tomcat服务并且正常后,无法访问怎么办?原来是没有开通外网访问的端口
  7. 在CentOS 6.6 64bit上基于源码安装全功能的vim 7.4实录
  8. ubuntu 14.04 64 bit上开启nscd服务缓存加速及清除dns缓存
  9. Blender三维建模和动画风格化的东方场景视频教程
  10. Flutter中集成Font Awesome