Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

数据访问与ADO.NET

$
0
0

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#代码示例

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, sqlcon);
            sqlcon.Open();
            SqlDataReader sqlread = sqlcom.ExecuteReader(CommandBehavior.CloseConnection);
            return sqlread;
        }

作者:wang379275614 发表于2013-2-6 10:14:37 原文链接
阅读:67 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>