数据访问与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 ,
上一个:.NET 代码规范学习
下一个:ASP.NET C#生成下拉列表树
- 更多asp疑问解答:
- asp正则过滤重复字符串的代码
- 用asp过滤全部html但保留br类似的符号
- 会asp,但感觉asp要过点,想学php。但我一般做的都是小公司的站,用access数
- PHP的空间可以用ASP的源代码吗?
- 以前做asp程序,现在应该怎样发展?是学.net还是php
- 以前做asp程序,现在应该怎样发展?是学.net还是php
- 想做一个市级的人才网acess,sql数据库,语言asp,jsp,php分别用哪种好
- jsp,asp,php 区别
- 我想找一个有比较多漏洞的网站的源码,比如可以asp,php注入等都可以。供学习研究用。请提供下载地址。。
- 现在候找人做个网站,用ASP,还是PHP语言去做好
- asp,php ,jsp,.net 对于做网站前台的重要吗?
- asp和php的区别是什么?
- 我是新手SEO菜鸟 请问wp dw php asp cms myspl dede 这些软件应该如何区分呀?
- 网页制作相关的三种语言:ASP JSP PHP那个好点,简单点?
- 网页制作相关的三种语言:ASP JSP PHP那个好点,简单点?