用C#对ADO.NET数据库完成简单操作
作者:李阳 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数据库完成简单操作相关推荐
- Python --链接MYSQL数据库与简单操作 含SSH链接
项目是软硬件结合,在缺少设备的情况,需要通过接口来模拟实现与设备的交互,其中就需要通过从数据库读取商品的ID信息 出于安全考虑 现在很多数据库都不允许通过直接访问,大多数是通过SSH SSH : 数 ...
- python连接到SQList数据库以及简单操作
python连接到SQList数据库以及简单操作 背景了解: Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用.Python定义了一套操作数据库 ...
- mysql和foxbase_Mysql使用基础知识和MYSQL数据库的简单操作 -(转)
Mysql使用基础知识 有很多朋友虽然安装好了mysql但却不知如何使用它.在这篇文章中我们就从连接MYSQL.修改密码.增加用户等方面来学习一些MYSQL的常用命令. 一.连接MYSQL.格式:my ...
- mysql数据库的简单操作
一.启动mysql服务 1.启动mysql服务 win+R键打开运行,输入services.msc打开本地服务,找到MySQL,进行启动.停止等操作. 2.连接mysql 1.win+R键打开运行,输 ...
- 03_Influxdb数据库的简单操作
目录 1.influxdb数据库操作 2.measurement(类似于表)操作 3.influxdb常用查询和删除操作 4.influxdb中数据保留时间的设置 5.influxdb使用易看的时间格 ...
- Android 中短信数据库的简单操作
Android APK操作短信数据时,不能使用SQLHelper直接操作,需要使用协议,协议使用Uri转义 content://sms/inbox 收件箱 content://sms ...
- mysql数据库的简单操作-1
数据库: 数据库,简而言之可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数据运行新增.截取.更新.删除等操作.所谓"数据库"系以一定方式储存在一起.能予多个用户共享 ...
- 实训09.11:数据库一些简单操作
new Database 新建数据库 new Table 新建表 utf-8 编码格式 primary key 主键:特点:在表中是唯一的不可重复的,一般都是学号,编号 auto increment ...
- SQL Server Management Studio备份数据库的简单操作步骤
看图说话 数据库工具 导出备份 选择完保存路径直接确定即可 引入备份 选择好之后确定即可
最新文章
- rancher部署项目Validation failed in API: Deployment.apps“”must be no more than 63 characters问题原因及解决方法
- CSS中实现DIV容器垂直居中
- github初次使用
- C# WinForm开发系列 - DataGrid/DataGridView
- 信息安全技术 网络安全等级保护测评要求_【诚资讯】等保2.0版本出炉!信息安全技术 网络安全等级保护基本要求正式发布...
- Python3 爬虫爬取中国图书网(淘书团) 记录
- 悉尼一船只引擎爆炸男子被迫跳水:严重烧伤被送医
- Linux-sed command
- MSRCRGIMP(基于GIMP版本的多尺度Retinex)
- Julia的Dates库是重要和必要的补充!
- Qt::QWidget 无默认标题栏边框的拖拽修改大小方式
- 【教程】Android系统手机 菜鸟扫盲汇总
- Tushare 简介与使用
- 2020最新省市区县编码
- 大数据时代 无处安放的隐私数据
- javaSE基础全覆盖
- Fibo Rule决策引擎应用实践
- 利用screen命令将程序挂在linux后台
- 74、单元测试-前置条件
- JPEG2000图像压缩算法学习
热门文章
- 记java关键词_Java关键词及含义
- ROS系统开发——ROS,realsense风险和解决方案备忘录
- CMake结合PCL库学习(2)
- Vue项目中使用wangEditor富文本输入框(推荐)
- Angular1.4.6框架简单读取数据库信息并渲染完成news新闻文章列表以及detail详情页功能(小试牛刀)
- 在阿里云ECS服务器上面开启tomcat服务并且正常后,无法访问怎么办?原来是没有开通外网访问的端口
- 在CentOS 6.6 64bit上基于源码安装全功能的vim 7.4实录
- ubuntu 14.04 64 bit上开启nscd服务缓存加速及清除dns缓存
- Blender三维建模和动画风格化的东方场景视频教程
- Flutter中集成Font Awesome