<marquee width=358>欢迎来到月影社区,希望这里可以成为您美丽的梦幻花园,如果你觉得这里好请分享给您的朋友!- wf66.com</marquee> 将月影社区设置为您的首页将月影社区地址加入到您的收藏栏
月影社区时尚音乐音乐查询IP手机许愿之瓶最新更新文件加密访客留言爱音乐
欢迎您,首页 >> 信息中心 >> ASP.NET讲座(5)-数据库的操作ADO.NET

请输入您关键字:


ASP.NET讲座(5)-数据库的操作ADO.NET

推荐查看本文HTML版本


自若干年前推出开放式数据库连接 (ODBC) 应用程序编程接口 (API) 以来,出现了各种各样的数据库访问技术,而 ADO.NET 是其中最新的一种。在这过程中,发生了许多有趣的事。例如,COM 闯入数据库领域,开始培植 OLE DB 的殖民进程。然后,大致相当于 OLE DB 自动化版本的 ActiveX? Data Objects (ADO) 被选来统治 Windows? 数据库开发者的 Visual Basic? 和 ASP 社区。
通过 .NET,Microsoft 正在提供通用框架(即 Framework Class Library),其中将包括所有现有的 Windows API 甚至更多的内容。特别值得一提的是,它包括大量常用的库,而这些库现在需要通过各个 COM 对象分别获得。在这些库中,您会发现 XML 和 ADO 对象模型,它们被集成到了叫做 ADO.NET 的类子树中。
ADO.NET 事实上成为构建数据感知 .NET 应用程序的基础。和 ADO 不同的是,ADO.NET 遵循更通用的原则,不那么专门面向数据库。ADO.NET 集合了所有允许数据处理的类。这些类表示具有典型数据库功能(如索引、排序和视图)的数据容器对象。尽管 ADO.NET 是 .NET 数据库应用程序的权威解决方案,但从总体设计上来看,它不象 ADO 模型那样以数据库为中心,这是 ADO.NET 的一大特点。
ADO.NET 与 ADO 有很大差异。ADO.NET 是新的数据访问编程模型,需要开发人员的全面理解、投入和新思维。然而,一旦开始掌握 ADO.NET,您将意识到:原有的 ADO 技巧非常有助于您以不同、却更巧妙和可靠的方式来创建有效的应用程序和解决各种老问题。
(以上译自 Microsoft .NET部一位官员的讲话)
5.1 目前的ADO.net
目前 ADO.NET 提供了两种托管提供程序:一种用于 SQL Server 7.0 或更高版本,另一种用于其他所有您可能已经安装的 OLE DB 提供程序。在这两种情况下您分别使用不同的类,但遵循相似的命名规则。除前缀外,名称都是相同的。前一种情况前缀为 SQL,后一种情况则是 ADO。
<% @ Import Namespace="System.Data.ADO" %>
<% @ Import Namespace="System.Data.SQL" %>
您应该使用 SQL 类访问 SQL Server 表,因为它们直接进入数据库服务器的内部 API,跳过了由 OLE DB 提供程序表示的中间层。ADO 类是 OLE DB 提供程序上的 .NET 接口,它们使用 COM Interop 桥进行工作。
5.2 连接一个数据库
Dim myConnection As New
 SQLConnection("server=localhost;uid=sa;pwd=;database=pubs")
Dim myCommand As New
 SQLDataSetCommand("select * from Authors", myConnection)
或者
 SQLConnection myConnection = new SQLConnection();
 myConnection.DataSource = "localhost";
 myConnection.UserID = "sa";
 myConnection.Password = "";
 myConnection.ConnectionTimeout = 30;
 myConnection.Open();
 myConnection.Database = "pub";
 myConnection.IsolationLevel = IsolationLevel.ReadCommitted
  
这里我们需要讲述一下Connection的方法和属性了。
ConnectionTimeout超时
DataBase 缺省数据库
DataSource DNS
UserID 原来叫UID[月影社区 http://wf66.com/]
Password
State 取得目前连接的状态
Open() 打开
Close() 关闭
5.3 操作数据库
通过一个Command对象,我们才可以对数据库进行操作
Dim myConnection As SQLConnection = New SQLConnection("server=localhost;uid=sa;
pwd=;database=pubs")
Dim myCommand As SQLCommand = New SQLCommand("select * from Authors", myConnection)
myConnection.Open()
Dim dr As New SQLDataReader
myCommand.Execute(dr)
...
myConnection.Close()
或者 这样做
Dim myConnection As New SQLConnection("server=localhost;uid=sa;pwd=;database=pubs")
Dim mycommand As New SQLCommand( _
"UPDATE Authors SET phone='(800) 555-5555' WHERE au_id = '123-45-6789'", _
myConnection)
myCommand.ActiveConnection.Open()
myCommand.ExecuteNonQuery()
myCommand.ActiveConnection.Close()

这些都是SQLCommand的标准用法,下面列出了Command的所有属性和相关方法。
ActiveConnection 取得或设置联结Connections
CommandText 执行的SQL语句或储存过程(StoredProcedure)名
CommandTimeout 超时
CommandType Command操作的类型(StoredProcedure,Text,TableDirect)三种,默认Text
Parameters 操作储存过程时使用
Execute() 执行SQL语句或储存过程
ExecuteNonQuery() 同上,但无返回,或者说,只返回记录的数量
注意: 和ASP一样,在运行完以后一定要注意关闭Connection,否则会很耗服务器资源的。
5.4 数据的显示
在这节的讲解前,我们先建立一个数据库,名字叫 aspnet 然后里面有一张表user 结构如下:
uid username Email
1  User1 Mail1
2  User2 Mail2
3  User3  Mail3

SQL 语句 Select * From User
数据库语句 server=localhost;uid=sa;pwd=;database=aspnet
5.4.1 用 DataReader 方法显示数据
有两种方法可以显示数据 DataReader方法,和DataSet方法,而DataReader只能储存查询数据,我们先讲用DataReader方法显示
<script language="VB" runat="server">
 Sub Page_Load(Src As Object, E As EventArgs)
Dim MyConnection As SQLConnection =
 New SQLConnection("server=localhost;uid=sa;
 pwd=;database=aspnet")
Dim MyCommand As SQLCommand =
 New SQLCommand("select * from User", MyConnection)
MyConnection.Open()
Dim DR As SQLDataReader
MyCommand.Execute(DR)
MyDataGrid.DataSource = DR
MyDataGrid.DataBind()
MyConnection.Close()
 End Sub
</script>
<ASP:DataGrid id="MyDataGrid" runat="server"
 Width="700"
 BackColor="#ccccff"
 BorderColor="black"
 ShowFooter="false"
 CellPadding=3
 CellSpacing="0"
 Font-Name="Verdana"
 Font-Size="8pt"
 HeaderStyle-BackColor="#aaaadd"
/>
对于显示的控制,大家可以复习一下前一讲,数据的绑定,其实多联系也是一种很好的方法。
在定制显示中,还有一种比较使用的方法,而不用绑定
Dim DR As SQLDataReader
DR["字段名"]的方法也可以取到数据
5.4.2 用 DataSet 方法显示数据
用DataSet记录的数据其实就是一个表,而对表的操作,只是对DataSet的操作,并没有改变数据库,而要到DataSet更新的时候,才完整的写入数据库,这个往往是新手容易忽视的地方。
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>
<html>
<script language="VB" runat="server">
 Sub Page_Load(Src As Object, E As EventArgs)
Dim DS As DataSet
Dim MyConnection As SQLConnection
Dim MyCommand As SQLDataSetCommand

MyConnection = New
 SQLConnection("server=localhost;uid=sa;pwd=;database=aspnet")
MyCommand =
 New SQLDataSetCommand("select * from User",MyConnection)
DS = new DataSet()
 ~~~初始化DataSet()
MyCommand.FillDataSet(ds, "User")
 ~~~FillDataSet顾名思义把整个查询内容储存进DataSet中
MyDataGrid.DataSource=ds.Tables("User").DefaultView
MyDataGrid.DataBind()
 ~~~绑定数据
 End Sub
</script>
<body>
 <h3><font face="Verdana">
Simple Select to a DataGrid Control
</font></h3>
<ASP:DataGrid id="MyDataGrid" runat="server"
Width="700"
BackColor="#ccccff"
BorderColor="black"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
MaintainState="false"
/>
</body>
</html>
5.5 数据的添加,修改,和删除
其实他们是在就是简单的不要再简单的东西。
添加:
DataRow dr=SQLDataSet.Tables["User"].NewRow();
dr["id"] = "4";
dr["username"] = "user4";
dr["Email"] = "mail4";
SQLDataSet.Tables.Rows.Add(dr);
修改:
SQLDataSet.Tables["user"].Rows[3]["username"]= "user5"
删除:
SQLDataSet.Tables["user"].Rows[3].Delete()
修改完之后,必须更新数据库
SQLCommand.Update(SQLDataSet, "user")
5.6 关于显示中的分页问题
这个问题,一再在论坛中给众人提出过,曾经是ASP中,一个比较难解决的问题,不过在ASP.net中,只不过是DataGrid的一个属性而已。
AllowPaging="True" 是否支持分页
PageSize="10" 每页显示多少
PagerStyle-HorizontalAlign="Left" 分页显示的定位
完整的例子:
<asp:DataGrid id="dataGrid1" runat="server"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
CellPadding="3"
CellSpacing="0"
HeaderStyle-BackColor="#aaaadd"
AllowPaging="True"
PageSize="10"
PagerStyle-HorizontalAlign="Left"/>

ASP.NET讲座(5)-数据库的操作ADO.NET 2006-9-8
转到本主题第:[ 1 ]
相关评论

暂无评论

总计0页 [ ]上一页 下一页
发表评论(揪错)
呢称: * 您尚未登陆,请登录
来自: *
内容:
 

(为防止非法信息,您的言论提交后需要审核才能正常显示)

文学
精品文萃 情感天地 言情小说
网络小说 玄幻小说 悬疑恐怖
武侠小说 古典品谈 外国名著
儿童文学 会员原创 学习园地
杂谈其它
娱乐
爆笑网文 星座占卜 影音动漫
娱乐新闻 影视剧情
诗词
青竹诗歌 个人诗集 宋词雅赏
全唐诗录
新闻
国际新闻 国内新闻 科技新闻
体育新闻
图片
图文专区 艺术长廊 桌面壁纸
精品素材 像素图片
漫画
单幅漫画 爆笑四格 连环漫画
电脑
电脑入门 图形图像 编程开发
游戏
我爱Q宠 最新攻略 最新秘籍
游戏新闻 技巧心得
经济
帕格节电 财经资讯 股市证券
生活
百科知识 外语学院 潮流时尚
健康医疗 宠物花卉 汽车地带
行走天下
美食
面食甜点 家常菜品 药膳食疗
美食天下 烹饪技巧 松辽风味
燕京风味 巴蜀风味 滇黔风味
赣江风味 徽皖风味 闽台风味
齐鲁风味 中州风味 岭南风味
荆楚风味 三晋风味 淞沪风味
苏扬风味 潇湘风味 钱塘风味
民族风味 素斋仿荤
营销
管理杂谈 谈经论道 培训激励
经营战略 职场生涯 公关交际
关于我们版权声明本站导航友情连结作品演示 TOP↑
本论坛言论纯属发表者个人意见,与£月影社区£立场无关。 皖ICP备16024038号-1
禁止发布任何色情/政治/反动相关信息让我们共同来营造一个属于我们的梦幻家园
Copyright ©2001-2006 MoonShadow. All rights reserved.  Version 4.0  Licence 2006.4.2
建站天数:7144天 本站基于ASP+JS构建,完全自主开发,版权归属月影社区 管理员QQ:23165062 Time:46ms