当前位置:编程学习 > asp >>

数据访问与ADO.NET

ADO.NET的设计目标
ADO.NET是Microsoft公司发布的新一代数据存取技术,是一个全新的数据库访问模型,使应用程序的开发人员能方便的访问不同的数据源
ADO.NET提供对SQL Server等数据源以及通过OLEDB和XML公开的数据源的一致访问。数据共享应用程序可以使用ADO.NET来连接到这些数据源,并检索、操作和更新数据
设计目标:
n  支持断开式多层编程模式
n  能够与XML紧密集成
n  具有能够组合来自多个、不同数据源的数据通用数据表示形式
n  具有为与数据库交互而优化的功能
 
ADO.NET体系结构:
  
ADO.NET的两个核心组件:(1)DataSet (2)数据提供程序(DataProvider:包括Connection、Command、DataReader、DataAdapter)
  
DataSet
u  DataSet 是ADO.NET的断开式结构的核心组件
u  设计目的:为了实现独立于任何数据源的数据访问
u  可以用于多种不同的数据源,用于XML数据,或用于应用程序本地数据
u  DataSet包含一个或多个DataTable对象集合
 
数据提供程序(DataProvider)
设计目标:为了实现数据操作和对数据快速、只进、只读访问
 
.NET框架提供了4个数据提供程序
1.        SQL Server数据提供程序
2.        OLE DB数据提供程序
3.        ODBC数据提供程序
4.        Oracle数据提供程序
 
DataProvider的四个对象
a)        Connection对象:提供与数据源的连接
b)       Command对象:使用户能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。
c)        DataReader对象:从数据源中提供高性能的数据流,读取数据
d)       DataAdapter对象:提供连接DataSet对象和数据源的桥梁
 
DataAdapter使用Command对象在数据源中执行SQL命令,以便将数据加载到DataSet中,并使对DataSet中数据的更改与数据源保持一致
 
数据库连接
要访问数据库,首先必须建立与数据库的连接
使用Connection对象创建和管理连接:
  
连接字符串
在建立连接时,通常要提供一些数据源的信息,如数据库的名称、数据库所在物理位置、用户账号、密码等等(和一般连接数据库吗没什么区别)
 
通过Connection对象的ConnectionString属性来设置
 
打开和关闭连接
连接的两个主要方法是Open和Close
Open方法
使用ConnectionString属性中的信息联系数据源并建立一个打开的连接
 
Close方法
关闭连接,是非常必要的。因为大多数据源只支持有限书目的打开的连接,并且打开的连接占用宝贵的系统资源
 
如果正在使用DataProvider或Command,则不必显示打开和关闭连接。因为当调用这些对象的某个方法(例如DataAdapter的Fill或Update方法)时,该方法将检查连接是否已经打开,如果没有,适配器将打开连接,执行其逻辑,然后再关闭连接。
 
Command对象
在用Connection对象成功连接数据库后,可以用command对象对数据进行操作,如对数据进行增、删、查、改等操作
Command对象表示要对数据源执行的一个SQL语句或存储过程
DataAdapter对象
DataAdapter(数据适配器)用来建立和初始化数据表,并将其填入DataSet对象,在内存中存储数据。
DataAdapter的主要方法是Fill,用来将来自DataAdapter中的数据填入DataSet中
 
DataSet
DataSet对象是一个存储在内存中的离线数据库,它并未与数据库建立及时的连接
DataSet对象专门用来存储从数据源中读出的数据,无论是SQL Server数据库还是Access数据库,在DataSet中存储方式都是一致的,用户无法从DataSet中判断读取的数据库类型
 
 
DataReader对象
如果不需要DataSet所提供的功能,则可以使用DataReader以只读方式返回数据
因为节省了DataSet所使用的内存,并省去了创建DataSet并填充其内容所需要的必要处理,所以可以提高应用程序的性能。
 
C#代码示例
[csharp] 
using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Data.SqlClient;  
using System.Data;  
using System.Text.RegularExpressions;  
using System.Windows.Forms;  
namespace 图书管理1  
{  
    class BaseOperate  
    {  
        //建立数据库连接  
        public SqlConnection getcon()  
        {  
            string str_sqlcon = "data source=.;database=library_sys;uid=sa;pwd=123456";  
            try  
            {  
                SqlConnection myCon = new SqlConnection(str_sqlcon);  
                return myCon;  
            }  
            catch (Exception ex)  
            {  
                MessageBox.Show("出错了","链接出错",MessageBoxButtons.OK);  
                throw ex;  
            }   
        }  
        //执行sqlcommand命令,但无返回值  
        public void getcom(string sqlstring)  
        {  
            SqlConnection sqlcon = this.getcon();  
            sqlcon.Open();  
            SqlCommand sqlcom = new SqlCommand(sqlstring, sqlcon);  
            sqlcom.ExecuteNonQuery();  
            sqlcom.Dispose();  
            sqlcon.Close();  
            sqlcon.Dispose();  
        }  
        //执行sql语句并返回一个dataset数据集对象  
        public DataSet getds(string sqlstring)  
        {  
            SqlConnection sqlcon = this.getcon();  
            SqlDataAdapter sqlda = new SqlDataAdapter(sqlstring, sqlcon);  
            DataSet myds = new DataSet();  
            sqlda.Fill(myds);  
            return myds;  
        }  
        //执行sql语句并返回一个sqlReader类型的对象,用于读取查询的数据  
        public SqlDataReader getread(string sqlstring)  
        {  
            SqlConnection sqlcon = this.getcon();  
            SqlCommand sqlcom = new SqlCommand(sqlstring, sqlc
补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,