ADO.NET 是 .NET 框架(.NET Framework)中的一个数据库访问架构,ADO是ActiveX Data Objects的缩写是一个COM组件库。用于实现 .NET 应用程序对于数据库的访问。
旧的版本中还有 System.Data.OracleClient,微软已不再维护,使用 ODP.Net连接Oracle;
ADO.NET六大对象分别是:
1、Connection(连接数据库,事物处理也使用此对象)
2、Command(执行T-SQL语句--返回数据、修改数据、运行存储过程及发送或检索参数信息的数据库命令)
3、DataAdapter(主要功能填充DataSet,在修改Dataset对象中的数据后通知数据库更新数据到数据库)
4、DataReader(读取数据库,一种只读模式,只向前的)
5、DataSet(数据集-ADO.Net的核心概念,可以把它当作是存在于内存中的数据库),可以包含一组DataTable,及这些表之间的关系;
6、DataTable(数据的容器):由一个或多个DataColumn组成,每个DataColumn由一个或多个包含数据的DataRow组成;
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:appAdministratorproduct11.2.0dbhome_1oledblibOraOLEDB11.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下载地址: