C#对SQL数据库操作类简介:Connection、Command、DataReader、DataSet、DataAdapter
在说C#操作数据库之前需要先说下ADO.NET。ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据。之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口。
ADO.NET可让开发人员以一致的方式存取资料来源(例如 SQL Server 与 XML),以及透过 OLE DB 和 ODBC 所公开的资料来源。资料共用的消费者应用程序可使用ADO.NET 来连接至这些资料来源,并且撷取、处理及更新其中所含的资料。ADO.NET类别 (Class) 位于 System.Data.dll 中,我们操作数据库使用的便是ADO.NET中的几个类,这几个类分别为:
1.Connection类:用于创建于数据库的连接。
2.Command类:用于下达SQL命令
3.DataReader类:读取数据
4.DataSet类:数据集
5.DataAdapter类:数据适配命令
以上便是我们操作数据库所使用的几个类,下面我们来分别看一下。
一、Connection
想要操作数据库,就必须先与数据库建立连接。Connection便是用于建立与数据库的联系的类。
创建于数据库的连接可以归纳为三个步骤:
- 创建连接字符串;
- 创建Connection对象;
- 打开数据库;
1.连接字符串:
创建用于SQL数据库连接的字符串一般有两种,一种是Windows认证方式字符串;另一种是SQL Server认证方式字符串;
- Windows认证方式字符串格式:Server=服务器名称; integrated security=SSPI; Initial Catalog=数据库名称;
- SQL Server认证方式字符串格式:Server=服务器名称; user=登录SQL的用户名; password=用户名对应的密码; database=数据的名称;
其中如果本机上的数据库,服务器名称可以有四种表示方式:1.计算机名;2.localhost;3..;4.IP地址;
2.创建Connection对象需要先引用命名空间System.Data.SqlClient; 创建对象格式为:
SqlConnection 对象名 = new SqlConnection(连接字符串);
3.打开与关闭数据库则是调用SqlConnection对象的方法open()与close();可以与try{}catch{}finally{}结合使用。
放个代码例子:
using System.Data.SqlClient;//应用命名空间
//定义字符串
string connectionStr = "Server=localhost;integrated security=SSPI;Initial Catalog=mydb001";
//创建连接对象
SqlConnection myConnection = new SqlConnection(connectionStr);
//测试是否连接成功
try
{
myConnection.Open();
}
catch
{
MessageBox.Show("数据库连接错误","错误提示");
}
finally
{
myConnection.Close();
}
二、Command下达SQL命令
使用Command的步骤:
- 创建命令字符串;
- 创建Command对象;
- 写入命令;
1.命令字符串即为SQL命令语句;
2.创建Command对象格式为:
SqlCommand myCommand = new SqlCommand(命令字符串,Connection对象名);
3.写入命令可以用Command的方法:
| 方法 | 返回值描述 |
| ExecuteNonQuery() | 不返回任何结果,常用于updata/insert/delete等不带返回值的命令 |
| ExecuteScalar() | 返回一个值,用于只带一个返回值得命令,如count/max/min等 |
| ExecuteReader() | 返回一个IDataReader |
放个代码例子:
//定义字符串
string connectionStr = "Server=localhost;integrated security=SSPI;Initial Catalog=mydb001";
//创建连接对象
SqlConnection myConnection = new SqlConnection(connectionStr);
//测试是否连接成功
try
{
myConnection.Open();//打开数据库
string commandSQLStr = "insert into mytable001(姓名,性别,年龄)values('张三','男',30)";//命令字符串
SqlCommand myCommand = new SqlCommand(commandSQLStr,myConnection);//创建Command对象
myCommand.CommandTimeout = ;//设置超时时间为5秒
myCommand.ExecuteNonQuery();
}
catch
{
MessageBox.Show("数据库连接错误","错误提示");
}
finally
{
myConnection.Close();//关闭数据库
}
三、DataReader读取数据
DataReader对象提供了顺序的,只读的方式读取Command对象获得的数据结果集。正是因为DataReader是以顺序的方式连续地读取数据,所以DataReader会以独占的方式打开数据库连接。
由于DataReader只执行读操作,并且每次只在内存缓冲区里存储结果集的一条数据,所以使用Datareader对象的效率比较高,如果要查询大量数据,同事不需要随机访问和修改数据,DataReader是优先的选择。DataReader对象有许多的属性和方法:
属性:
- FieldCount属性:该属性用来表示由DataReader得到的一行数据中的字段数。
- HasRows属性:该属性用来表示DataReader是否包含数据。
- IsClosed属性:该属性用来表示DataReader对象是否关闭。
方法:
- Close 将DataReader 对象关闭
- GetDataTypeName 取得指定字段的数据型态
- GetName 取得指定字段的字段名称
- GetOrdinal 取得指定字段名称在纪录中的顺序
- GetValue 取得指定字段的数据
- GetValues 取得全部字段的数据
- IsNull 用来判断字段内是否为Null 值
- NextResult 用来和SQL Script 搭配使用,表示取得下一个结果
- Read 让DataReader 读取下一笔记录,如果有读到数据则传回True,若没有纪录则传回False
放个代码例子:
//定义字符串
string connectionStr = "Server=localhost;integrated security=SSPI;Initial Catalog=mydb001";
//创建连接对象
myConnection = new SqlConnection(connectionStr);
//测试是否连接成功
try
{
myConnection.Open();//打开数据库
string commandSQLStr = "select * from mytable001";//命令字符串
SqlCommand myCommand = new SqlCommand(commandSQLStr, myConnection);//创建Command对象
myCommand.CommandTimeout = ;//设置超时时间为5秒
SqlDataReader myDataReader = myCommand.ExecuteReader();
}
catch
{
MessageBox.Show("数据库连接错误","错误提示");
}
finally
{
myConnection.Close();//关闭数据库
}
四、DataSet数据集
DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的。
DataSet对象由一组DataTable对象组成,这些对象与DataRelation对象互相关联。这些DataSet对象又包含Rows集合,Columns集合,Rows集合由多个DataRow对象组成,Columns集合由多个DataColumn对象组成。
由于DataSet对象很像数据库,所以可以像访问关系型数据库那样访问DataSet,例如在DataSet中添加,删除表,在表中进行查询数据,删除数据等操作。
DataSet对象有常用的方法:
五、DataAdapter数据适配命令
DataAdapter对象是DataSet和数据之间的桥梁,可以建立并初始化数据表对数据源执行SQL指令,与DataSet对象结合,提供DataSet对象存储数据,可视为DataSet对象的操作核心。
在使用DataAdapter对象时,只需要设置表示SQL命令和数据库连接的两个参数,就可以通过Fill方法把查询结果放置在一个DataSet对象中。DataAdapter对象可用于执行数据库的命令操作,含有四个不同的操作命令:
- SelectCommand:用来选取数据源中的记录;
- InsertCommand:用来向数据源中新插入一条记录;
- UpdateCommand:用来更新数据源中的数据;
- DeleteCommand:用来删除数据源中的记录。
- Fill:从数据源增加或刷新行,并将这些行放到DataSet表中。
- Updata:将DataSet表的更改传送到相应的数据源中。
C#对SQL数据库操作类简介:Connection、Command、DataReader、DataSet、DataAdapter的更多相关文章
- 个人博客设计:创建Sql数据库操作类。
整体的博客框架如下 数据库操作java类如下 package com.yxq.dao; import java.sql.Connection; import java.sql.DriverManage ...
- 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...
- PDO数据库操作类
<?php include 'common_config.php'; /** * Class Mysql * PDO数据库操作类 */ class Mysql { protected stati ...
- C# Oracle数据库操作类实例详解
本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长 ...
- C#全能数据库操作类及调用示例
C#全能数据库操作类及调用示例 using System; using System.Data; using System.Data.Common; using System.Configuratio ...
- (转)C# Oracle数据库操作类
原文地址:http://www.cnblogs.com/haibing0107/p/6143922.html using System;using System.Data;using System.C ...
- 数据库操作类《SqlHelper》
一.背景 在看了一本书叫<Visual Studio 2010(C#)Windows数据库项目开发>后,觉得很多编程技术需要积累,因为一个简单的项目里包含的技术太多了,容易忘记.每次需要用 ...
- Oracle数据库操作类及连接方法
创建DataBaseAccess引用库下面包括DBConnectionString.cs,DBType.cs ,SysName.cs 三个类 DBConnectionString: using Sys ...
- C# Oracle数据库操作类
using System; using System.Data; using System.Collections.Generic; using System.Configuration; using ...
随机推荐
- OOP中的逆变和协变
逆变和协变在存在于强类型语言中,尽管非常少提及.可是里面蕴含了面向对象的世界观.感谢和我一起讨论这个问题的人. 这里用了C#.Scala的语法作为演示样例.事实上逆变和协变的概念跟语言本身关系不大.事 ...
- Android Message handling (based on KK4.4)
一.几个关键概念 1.MessageQueue:是一种数据结构,见名知义,就是一个消息队列.存放消息的地方.每个线程最多仅仅能够拥有一个MessageQueue数据结构. 创建一个线程的时候,并不会自 ...
- [转载]Hibernate如何提升数据库查询的性能
目录(?)[-] 数据库查询性能的提升也是涉及到开发中的各个阶段在开发中选用正确的查询方法无疑是最基础也最简单的 SQL语句的优化 使用正确的查询方法 使用正确的抓取策略 Hibernate的性能优化 ...
- virt-v2v 使用指南
virt-v2v 使用指南 1.定义. virt-v2v将外部的虚拟化平台上的虚拟机转化到可以运行的KVM平台上.它可以读取在VMware.Xen运行Hyper-V和其他虚拟机管理程序上的Window ...
- STM32大文件分块校验CRC
一.CRC校验的使用 STM32内置CRC计算单元,节约了软件计算的时间.在软件开发中,可以为firm追加4字节的CRC校验码到生成的BIN文件最后位置,这个CRC码就是全部代码区域数据的CRC ...
- php获取图片的拍摄及其他数据信息
服务器配置说明:1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前 ...
- javascript-JQuery样式篇(一)
轻量级的JavaScript库,核心依然是JavaScript,不仅兼容了CSS3,还兼容了各种浏览器 强大的选择器,完善的事件机制,出色的Ajax封装,丰富的UI 进入官方网站获取最新的版本 htt ...
- 使用Chrome采集摄像头并生成视频下载
主要使用2个技术点:WebRtc 的 getUserMedia 和 MediaRecorder 注意点 开始录制调用 start 方法要传入一个采样间隔,这样录制的媒体会按照你设置的值进行分割成一个个 ...
- 通俗解释glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用
通俗解释glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用 (2012-04-02 09:17:28) 转载▼ 对于glLoadIdentity(), ...
- codeforces 612D The Union of k-Segments (线段排序)
D. The Union of k-Segments time limit per test 4 seconds memory limit per test 256 megabytes input s ...