ADO.NET提供了两个组件,用来访问和处理数据:.NET Framework数据提供程序和DataSet(数据集)
- .NET Framework数据提供程序是专门为数据处理及快速地只进、只读访问数据而设计的组件。使用它可以连接数据源、执行命令和检索结果,直接对数据源进行操作。
- DataSet是专门为独立于任何数据源的数据访问而设计的。使用它,可以不必直接和数据源打交道,大批量的操作数据,也可以将数据绑定在控件上。
.NET Framework数据提供程序
.NET Framework数据提供程序 |
说明 |
.NET Framework用于 SQL Server 的数据提供程序 |
提供对Microsoft SQL Server数据访问。使用 System.Data.Sql.Client 命名空间 |
.NET Framework用于 OLE DB 的数据提供程序 |
提供对 OLE DB 公开的数据源中数据的访问。使用 System.Data.Sql.OleDb 命名空间 |
.NET Framework用于 ODBC 的数据提供程序 |
提供对使用 ODBC 公开的数据源中数据的访问。使用 System.Data.Odbc 命名空间 |
.NET Framework用于 Oracle 的数据提供程序 |
适用于 Oracle 数据源,用于Oracle的.NET Framework数据提供程序支持Oracle客户端软件8.1.7版和更高版本。使用 System.Data.Oracle.Client 命名空间 |
EntityClient 提供程序 |
提供对实体数据模型(EDM)应用程序的数据访问。使用 System.Data.Entity.Client |
.NET Framework数据提供程序的四个核心对象
对象 |
说明 |
Connection |
建立与特定数据源的连接 |
Command |
对数据源执行命令 |
DataReader |
从数据源中读取只进且只读的数据流 |
DataAdapter |
用数据源填充DataSet并解析更新 |
.NET数据提供程序及相应的连接类
.NET数据提供程序 |
连接类 |
命名空间 |
SQL数据提供程序 |
SqlConnection |
System.Data.SqlClient |
OLE DB数据提供程序 |
OleDbConnection |
System.Data.OleDb |
ODBC数据提供程序 |
OdbcConnection |
System.Data.Odbc |
Oracle数据提供程序 |
OracleConnection |
System.Data.OracleClient |
Connection对象的常用属性和方法
属性 |
说明 |
ConnectionString |
设置/获取应用程序连接数据库的连接字符串 |
方法 |
说明 |
void Open( ) |
使用ConnectionString属性所指定的设置打开数据库连接 |
void Close( ) |
关闭与数据库的连接 |
建立应用程序与数据库连接需要以下三个步骤:
1、定义连接字符串
不同的数据库连接字符串,其格式不同。
语法:
SQL Server数据库的连接字符串格式一般如下。
Data Source=服务器名;Initial Catalog=数据库名;User ID=用户名;Pwd=密码
数据库连接字符串由多个参数组成,其中:
- Data Source:指定与应用程序连接的数据库服务器的名称或IP地址。若将本机作为应用程序的数据库服务器,则该参数的值可以是“.”、“(local)”或“127.0.0.1”。
- Initial Catalog:指定应用程序将要访问的数据库名称。
- UserID:SQL Server数据库的用户名
- Pwd:SQL Server数据库用户名的密码
例如,应用程序与本机的pubs数据库连接的字符串可以写成:
String connString=“Data Source=.; Initial Catalog=pubs; User ID=sa; Pwd=bdqn”;
注意:密码如果为空,可以省略Pwd一项。
2、创建Connection对象
使用定义好的;连接字符串创建Connection对象。
语法:
SqlConnection connection=new SqlConnection(connString);
3、打开与数据库的连接
调用Connection对象的Open()方法打开数据库连接。
语法:
connection.Open();
在上面的这三个步骤中,第一、二步的先后顺序可以调换,可以先创建一个Connection对象,在设置它的ConnectionString属性,例如:
SqlConnection connection=new SqlConnection( );
String connString="Data Source=.;Initial Catalog=pubs;User ID=sa;Pwd=bdqn";
Connection.ConnectionString=connString;
使用Visual Studio的服务资源管理器获得连接字符串的方法:
(1)在Visual Studio中,选择菜单栏中的“视图”→“服务器资源管理器”选项,或按快捷键Ctrl+Alt+S。
(2)在打开的服务器资源管理器中,右击“数据连接”选项,在弹出的快捷菜单中选择“添加连接”选项。
(3)在弹出的“添加连接”对话框中,选择数据源,输入服务器名,选择身份验证,选择要连接的数据库,确定后,就在服务器资源管理器中添加了一个数据库连接。
(4)选中新添加的连接,在“属性”窗口中就能够找到连接字符串了,可以将它选中复制到代码中。
注意:打开数据库连接,执行命令后,要确保关闭数据库连接。
异常处理
try-catch语句
语法:
try
{
//包含可能出现异常的代码
}
catch(处理的异常类型)
{
//处理异常的代码
}
异常也有很多种类型,本课程我们只需关注Exception类。这是.NET提供的一个异常类,表示应用程序在运行时出现的错误。
try-catch-finally语句
try
{
//打开数据库连接
connection.Open();
Console.WriteLine("打开数据库连接成功");
}
catch(Exception ex)
{
Console.WriteLine("出现异常"+ex.Message);
}
finally
{
//关闭数据库连接
connection.Close();
Console.WriteLine("关闭数据库连接成功");
}
使用Command对象
Command对象负责执行命令并从数据源中返回结果,它和货车的作用类似,在河的两岸搭建了桥梁之后,要有运输工具才行,Command对象就可以起到这样的作用。
.NET 数据提供程序及相应的命令类
.NET 数据提供程序 |
连接类 |
命名空间 |
SQL 数据提供程序 |
SqlCommand |
System.Data.SqlClient |
OLE DB数据提供程序 |
OleDbCommand |
System.Data.OleDb |
ODBC 数据提供程序 |
OdbcCommand |
System.Data.Odbc |
Oracle 数据提供程序 |
OracleCommand |
System.Data.OracleClient |
在建立了数据库连接后,就可以使用相应的Command对象来执行数据库的操作。创建Command对象的语法如下。
语法:
SqlCommand command=new SqlCommand(String sql,SqlConnection conn);
创建一个Command对象需要两个参数。第一个参数是将要执行的SQL语句,第二个参数是已经创建的Connection对象。
Comamnd对象的主要属性和方法
属性 |
说明 |
Connection |
Command对象使用的数据库连接 |
CommandText |
执行的SQL语句 |
方法 |
说明 |
int ExecuteNonQuery( ) |
执行不返回行的语句,如UPDATE等 |
SqlDataReader ExecuteReader( )或SqlDataReader ExecuteReader(CommandBehavior behavior) |
执行查询命令,返回DataReader对象 |
object ExecuteScalar( ) |
返回单个值,如执行COUNT(*) |
本章主要介绍Command对象ExecuteScalar()方法。ExecuteScalar()方法只返回查询结果中第一行第一列的值。当查询结果只有一个数值时,通常调用这个方法,如使用聚合函数完成查询时。一般情况下,这个方法的返回值需要进行显示类型转换后才能使用。
要使用Command对象,必须有一个可用的Connection对象,使用Command对象的步骤如下。
(1)创建数据库连接
按照前面讲过的步骤创建一个Connection对象
(2)定义执行的SQL语句
将对数据库执行的SQL语句赋给一个字符串
(3)创建Command对象
使用已有的Connection对象和SQL语句字符串创建一个Command对象。
(4)执行SQL语句
使用Command对象的某个方法执行命令
数据库查询示例
示例3总我们按照前面讲的步骤来实现,自定义了一个有三个参数的方法,第一个参数是用户名,第二个参数是密码,第三个参数使用引用类型来返回处理的信息。在该方法中用Connection对象连接数据库,数据库连接成功后,通过Command对象的ExecuteScalar()方法返回查询结果。注意在使用ExecuteScalar()方法时需要将方法的返回值转换为整型后再赋值。若返回值大于1,则说明用于存在;否则此用户不存在。