ADO.NET 是 .NET 框架(.NET Framework)中的一个数据库访问架构,ADO是ActiveX Data Objects的缩写是一个COM组件库。用于实现 .NET 应用程序对于数据库的访问。html
旧的版本中还有 System.Data.OracleClient,微软已再也不维护,使用 ODP.Net链接Oracle;git
ADO.NET六大对象分别是:github
一、Connection(链接数据库,事物处理也使用此对象)数据库
二、Command(执行T-SQL语句--返回数据、修改数据、运行存储过程及发送或检索参数信息的数据库命令)windows
三、DataAdapter(主要功能填充DataSet,在修改Dataset对象中的数据后通知数据库更新数据到数据库)安全
四、DataReader(读取数据库,一种只读模式,只向前的)架构
五、DataSet(数据集-ADO.Net的核心概念,能够把它看成是存在于内存中的数据库),能够包含一组DataTable,及这些表之间的关系;oracle
六、DataTable(数据的容器):由一个或多个DataColumn组成,每一个DataColumn由一个或多个包含数据的DataRow组成;app
Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。框架
SqlConnection类的对象链接SQL Server数据库;OracleConnection 类的对象链接Oracle数据库(Oracle的版本小于11使用此种方式,当版本为11及以上时使用ODP.Net);OleDbConnection类的对象链接支持OLE DB的数据库,如Access;而OdbcConnection类的对象链接任何支持ODBC(开放数据库互联)的数据库。
与数据库的全部通信最终都是经过Connection对象来完成的。
SqlConnection 的链接字符串(ConnectionString)
加入命名空间:using System.Data.SqlClient;
链接数据库: string conString = "data source=IP地址; Database=数据库名;user id=用户名; password=密码";
CommandType用来定义某条命令是SQL子句、存储过程的调用、仍是完整的表语句(仅从给定的表中选择全部行和列);TableDirect命令类型只对OleDb提供程序有效;
ExecuteNonQuery():执行SQL,返回一个整型变量,若是SQL是对数据库的记录进行操做,那么返回操做影响的记录条数,若是是 SQL="CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)"那么在表建立成功后该方法返回 –1。
ExecuteScalar():执行SQL,(若是SQL是查询Select)返回查询结果的第一行第一列,若是(若是SQL不是查询Select)那 么返回未实列化的对象,由于对象未实列化,因此返回结果不能ToString(),不能Equals(null),也就是说返回结果没有任何做用
ExecuteReader方法执行SQL,(若是SQL是查询Select)返回查询结果的集合,类型是 System.Data.OleDb.OleDbDataReader,你能够经过此结果,获取查询的数据。若是(若是SQL不是查询Select)那么 返回一个没有任何数据的System.Data.OleDb.OleDbDataReader类型的集合(EOF);
ExecuteXmlReader() ---返回一个XmlReader对象,能够遍历从数据库中返回的XML片断;适应于SqlClient和ODP.net提供的程序
OleDbConnection链接各类数据源 ,因为数据源不一样,相应的链接字符串也会不一样。
加入命名空间:using System.Data.OleDb;
链接 SQL Server: string conString = "Provider=SQLOLEDB.1; Persist Security Info=False; user id=用户名; Database=数据库名; data source=COMPUTER; ";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
链接 Access: string conString = "Provider=Microsoft.Jet.OLEDB.4.0; data source=C:\\Database1.mdb; Persist Security Info=False;";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
(也能够经过创建.udl文件来得到字符串)
链接 Oracle:
string conString = "Provider=MSDAORA; user id=用户名; password=密码; data source=db; Persist Security Info=False;";
string oradb = "Provider=OraOLEDB.Oracle;Data Source=water;User Id=modis;Password=modis;";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
OleDb方式,微软和Oracle公司各自提供了OleDb的驱动程序,使用方法的差异不多。
引用类库:微软的只须要System.Data.dll;若用Oracle的驱动,虽然也只要引入System.Data.dll,但前提是首先安装Oracle针对.Net的数据访问组件。
链接字符串:provider--微软“provider=MSDAORA;”;Oracle-“provider='OraOleDb.Oracle';”。前者已经不怎么使用;后者需安装Oracle客户端;
未在本地计算机上注册“OraOLEDB.Oracle”提供程序解决方案的错误处理:
regsvr32 E:\app\Administrator\product\11.2.0\dbhome_1\oledb\lib\OraOLEDB11.dll
OracleConnection链接Oracle---微软已再也不维护,建议使用Oracle的ODP.Net链接
加入命名空间:using System.Data.OracleClient;
链接数据库: string conString = "data source=IP地址; Database=数据库名;user id=用户名; password=密码";
OracleConnection myconnection = new OracleConnection(conString);
myconnection.open();
注意:使用不一样的Connection对象须要导入不一样的命名空间。OleDbConnection的命名空间为System.Data.OleDb。SqlConnection的命名空间为System.Data.SqlClient。OracleConnection的命名空间为System.Data.OracleClinet。
DBHelpers是一个简单但功能强大的库,用于使用简单的ADO.NET数据库访问组件。
DBHelpers包含哪些特征
Async(异步)、Batch execution(批量执行脚本)、Custom converters(自定义类型转换)、
Multi table retrieval(多结果集查询)、Easy safe parameterized DbCommand(简单安全的参数化)、
Automatic mapping of objects(自动映射类型)、Built in paging support(内置支持分页)、等等。
DBHelpers内置方法
ExecuteNonQuery、ExecuteReader、ExecuteScalar、
ExecuteDataTable、ExecuteDataSet、ExecuteArray、ExecuteDictionary、ExecuteObject、ExecuteList、
ExecuteNonQueryAsync、ExecuteObjectAsync、ExecuteListAsync
github下载地址: