ASP.NET(VB.NET)学习笔记--第六章.访问数据库(1/3)
来源:互联网 发布:趣行天下北京网络 编辑:程序博客网 时间:2024/05/16 10:06
第六章.访问数据库
一.ADO.NET的结构
二.ADO.NET的使用
.NET Framwork提供的常用代码命名空间
命名空间名称
说明
System.Data
ADO.NET基本对象和类型
System.Data.SQLClient
为SQL Server提供的管理对象
System.Data.OleDB
为OLEDB Provider提供的管理对象
三.连接数据库 Connection
1.连接参数:
(1).语法:
Dim MySqlConnection As New SqlConnection([ConnectionString])
Dim MyOleDbConnection As New OleDbConnection([ConnectionString])
(2).OLE DB接连
Provider:设置数据源的OLE DB驱动程序。Access为”Microsoft.Jet.OLEDB.4.0”,SQL Server6.5或之前版本为”SQLOLEDB”,Oracle为”MSDAORA”
Data Source:设置数据源的实际路径
Password:设置登陆数据库时所用的密码
User ID:设置登陆数据库时所用的账号
(3).SQL连接
Data Source:连接的数据库服务器名
Initial Catalog:连接的数据库名称
Integrated Security:服务器的安全性设置,值有True,False和SSPI三种,True和SSPI都表示使用信任连接
Worksation Id:数据库客户端标识,默认为客户端计算机名
Packet Size:与SQL Server通信的网络数据包的大小,单位为字节,有效值为512-32767,默认值为8192
Password(Pwd):设置登陆SQL Server时所用的密码
User ID:设置登陆SQL Server时所用的账号
Connection Timeout:SqlConnection 对象连接SQL数据库服务器的超时时间,单位为秒。若在设置的时间内无法连接数据库,则返回失败,默认为15秒
(4).注意
如果要使用DSN,则可通过OleDbConnection类来打开数据库连接:
StuConnectio=New OleDbConnection(“DSN=StuDSN”)
2.Connection对象的常用属性
属性
说明
ConnectionString
连接字符串
ConnectionTimeout
Connection对象的超时时间,单位为秒。即若在这个时间之内Connection对象无法连接数据源,则返回失败。为0表示不限制
Database
当前数据库名称,默认为Nothing
DataSource
数据源的完整路径及文件名,若是SQL Serve数据库则获取所连接的SQL Server服务器名称
PacketSize
与SQL Server通信的网络数据包的大小,单位为字节,默认为8192。此属性只有SQL Server数据库才可使用
Provider
OLE DB提供程序的名称。此属性只有OLE DB数据源才可使用
Server Version
数据库驱动程序的版本
State
数据库的连接状态,1表示联机,0表示关闭
WorkstationId
数据库客户端标识,默认为客户端计算机名。此属只适用于SQL Server数据库
3.Connection对象的常用方法
方法
说明
Open()
打开与数据库的连接。注意,ConnectionString属性只对连接属性进行设置,并不打开与数据库的连接,必须使用Open()方法打开连接
Close()
关闭数据库连接
ChangeDatabase()
在打开连接的状态下,更改当前数据库
CreateCommand()
创建并返回与Connection对象有关的Command对象
Dispose()
调用Close()方法关闭与数据库的连接,并释放所占用的系统资源
4.Connection对象的事件
InfoMessage:在.NET数据提供程序发送警告或信息时触发该事件
StateChange:当数据连接状态改变时,即调用Open()或Close()方法,触发该事件。
该事件的参数为StateChangeEventArgs,有二种取值:
(1)CurrentState:Connection对象连接的新状态,1表示联机,0表示关闭;
(2)OriginState:Connection对象连接的原始状态,1表示联机,0表示关闭
5.例 创建Connection链接对象
(1).打开与Access数据库的连接
<%@Import namespace="System.Data"%>
<%@Import namespace="System.Data.OleDb"%>
<script language="vb" runat="server">
sub Page_Load(Sender as Object,e As EventArgs)
dim conn as new oledbconnection()
conn.connectionstring="provider=microsoft.jet.oledb.4.0;data source="+server.mappath("cbw.mdb")
conn.open()
conn.close() ‘关闭连接
end sub
</script>
(2).打开与SQL Server 2000数据库的连接
<%@Import namespace="System.Data"%>
<%@Import namespace="System.Data.SqlClient"%>
<script language="vb" runat="server">
sub Page_Load(Sender as Object,e As EventArgs)
Dim myConnection As SqlConnection
myConnection=New SqlConnection("server=7BB2389B11EA496;uid=sa;database=cbw")
myConnection.Open()
conn.close() ‘关闭连接
end sub
</script>
(3).针对不同的编程接口建立数据库连接
<%@Import namespace=”System.Data”%>
<%@Import namespace=”System.Data.SQLclient”%>
<%@Import namespace=”System.Data.OleDb”%>
<html>
<script language=”vb” runat=server>
Sub Page_Load(Source as Object,E as EventArgs)
Dim oleconnection as oledbConnection ‘********
Dim oleconnstr as String ‘********
Dim sqlconnection as sqlConnection
Dim sqlconnstr as String
Oleconnstr=”provider=SQLOLEDB;datasource=数据源名称;database=数据库名称;user id=用户名(sa)” ‘********
Oleconnection=new oledbConnection(oleconnstr) ‘********
‘********四行可以改写为:Dim oleconnection as new oledbconnection(“provider=SQLOLEDB;datasource=数据源名称;database=数据库名称;user id=用户名(sa)”)
Sqlconnstr=”server=SQL服务器名称;uid=用户名(sa);pwd=密码(空);database=数据库名称”
Sqlconnection=new sqlConnection(sqlconnstr)
Labcontent.Text=”成功建立连接”
Oleconnection=nothing
Sqlconnection=nothing
End Sub
</script>
<body>
<form runat=server>
<asp:label id=labcontent runat=server/><br>
</form>
</body>
</html>
四.访问数据库
1.基于Command对象,用DataReader对象访问数据库
I.Command对象
1).语法:
Dim MySqlCommand As New SqlCommand([cmdText,connection])
Dim MyOleDbCommand As New OleDbCommand([cmdText,connection])
2). Command对象的常用属性
属性
说明
CommandText
要对数据源执行的SQL命令、存储过程或数据表名
CommandTimeout
Command对象的超时时间,单位为秒。默认为30秒,即若在这个时间之内Command对象无法执行SQL命令,则返回失败,为0表示不限制
CommandType
命令类型,可取的值:StoredProcedure,TableDirect,Text,代表的含义分别为:存储过程、数据表名和SQL语句,默认为Text。属性的值可表示为CommandType.StoredProcedure、CommandType. TableDirect、CommandType.Text等,也可以用相应的数字表示
Connection
Command对象所使用的数据连接属性
Parameters
SQL命令参数集合
3). Command对象的常用方法
方法
说明
Cancel()
取消Command对象的执行
CreateParameter
创建Parameter对象
ExecuteNonQuery()
执行CommandText属性指定的内容,返回数据表被影响的行数。只有Update、Insert和Delete命令会影响行数。该方法用于执行对数据库的更新操作。
一般用于不需要返回值的操作。如Update、Insert、Delete操作。
ExecuteReader()
执行CommandText属性指定的内容,返回DataReader对象
一般用于需要返回值的操作。如Select操作。
ExecuteScalar()
执行CommandText属性指定的内容,返回结果表第一行第一列的值。该方法只能执行Select命令
ExecuteXmlReader()
执行CommandText属性指定的内容,返回XmlReader对象。只有SQL Server才能用此方法
4).例
例1.
Dim cmd As New OleDbCommand()
cmd.CommandText=”students”
cmd.CommandType=Command.TableDirect
cmd.Connection=conn
例2.
……
Dim sqlstr as string=”Update students set age=age+10 where id=2”
Dim cmd As New OleDbCommand(sqlstr,conn) ‘创建Command对象
cmd.ExecuteNonQuery() ‘执行CommandText命令
conn.Close()
……
例3:使用不同的接口删除记录
<%@Import namespace=”System.Data”%>
<%@Import namespace=”System.Data.SQLclient”%>
<%@Import namespace=”System.Data.OleDb”%>
<html>
<script language=”vb” runat=server>
Sub Page_Load(Source as Object,E as EventArgs)
Dim oleconnection as New oledbConnection(“provider=SQLOLEDB;datasource=数据源名称;database=数据库名称;user id=用户名(sa)”)
Dim olecommand as New oledbCommand
Dim sqlconnection as New sqlConnection(“server= SQL服务器名称;uid=用户名(sa);pwd=密码(空);database=数据库名称”)
Dim sqlcommand as new sqlcommand
Oleconnection.Open
Olecommand.Connection=oleconnection
Olecommand.CommandText=”delete from 表名 where 条件”
Olecommand.ExecuteNonQuery
Olecommand=nothing
Oleconnection.Close
Oleconnection=nothing
Sqlconnection.Open
Sqlcommand.Connection=sqlconnection
Sqlcommand.CommandText=” delete from 表名 where 条件”
Sqlcommand.ExecuteNonQuery
Sqlcommand=nothing
Sqlconnection.Close
Sqlconnection=nothing
Labcontent.Text=”删除成功”
End Sub
</script>
<body>
<form runat=server>
<asp:label id=labcontext runat=server/><br>
</form>
</body>
</html>
II.DataReader对象
说明:该对象只能读取数据,不能写入数据,并且只能顺序读取数据,即将数据表中的行从头至尾依次顺序读出。
1).语法:
Dim objReader as OleDbDataReader
2). DataReader对象的常用属性
属性
说明
FieldCount
DataReader对象包含的记录行数(也就是返回的数据字段数)
IsClosed
DataReader对象的状态,为True表示关闭
Item({name,col})
表字段值。Name为字段名;col为列序号,序号从0开始。例如:objReader.Item(0),objReader.Item(“name”)
RecordsAffected
在执行Insert、Update或Delete命令后影响的行数。该属性只有在读取完所有行且DataReader对象关闭后才会被设定
3). DataReader对象的常用方法
方法
说明
Close()
关闭DataReader对象
GetBoolean(Col)
获取序号为Col的列的值,所获取列的数据类型必须为Boolean类型;其他类似的方法还有:GetByte,GetChar,GetDateTime,getDecimal,GetDouble,
GetFloat,GetInt16,GetInt32,GetInt64,GetString等
GetDataTypeName(Col)
获取序号为Col的列的来源数据类型名
GetFieldType(Col)
获取序号为Col的列的数据类型
GetName(Col)
获取序号为Col的列的字段名
GetOrdinal(Name)
获取字段名为Name的列序号
GetValue(Col)
获取序号为Col的列的值
GetValues(values)
获取所有字段的值,并将字段值存放在values数组中
IsDBNull(Col)
若序号为Col的列为空值,则返回True,否则返回False
Read()
读取下一条记录,返回布尔值。返回True表示有下一条记录,返回False表示没有下一条
III.基于Command对象,用DataReader对象查询数据
<%@Import namespace="System.Data"%>
<%@Import namespace="System.Data.OleDb"%>
<%@ Page Language="vb" Debug="true" %>
<script language="vb" runat="server">
sub Page_Load(Sender as Object,e As EventArgs)
if not ispostback then
dim conn as new oledbconnection()
dim cmd as new oledbcommand()
dim objreader as oledbdatareader
dim i as integer
conn.connectionstring="provider=microsoft.jet.oledb.4.0;data source="+server.mappath("cbw.mdb")
conn.open()
cmd.connection=conn
cmd.commandtext="select * from message"
objreader=cmd.ExecuteReader() ‘执行CommandText命令,并返回给objreader
response.write("留言表")
response.write("<table><tr>")
for i=0 to objreader.FieldCount-1 ‘循环显示所有字段名
response.write("<td>"+objreader.GetName(i)+"</td>") ‘显示字段名
next
while objreader.read() ‘循环显示所有记录
response.write("<tr>")
for i=0 to objreader.fieldcount-1 ‘循环显示当前记录的所有字段信息
response.write("<td>")
response.write(objreader.GetValue(i))
response.write("</td>")
next
response.write("</tr>")
end while
response.write("</table>")
objreader.close()
conn.close()
end if
end sub
</script>
IV.把DataReader绑定到DataGrid对象上 同理可以绑定到Repeater及DataList对象上
<%@Import namespace="System.Data"%>
<%@Import namespace="System.Data.OleDb"%>
<%@ Page Language="vb" Debug="true" %>
<script language="vb" runat="server">
sub Page_Load(Sender as Object,e As EventArgs)
if not ispostback then
dim conn as new oledbconnection()
dim cmd as new oledbcommand()
dim objreader as oledbdatareader
dim i as integer
conn.connectionstring="provider=microsoft.jet.oledb.4.0;data source="+server.mappath("cbw.mdb")
conn.open()
cmd.connection=conn
cmd.commandtext="select * from message"
objreader=cmd.ExecuteReader() ‘执行CommandText命令,并返回给objreader
MyDataGrid.DataSource=objreader
MyDataGrid.DataBind
objreader.close()
conn.close()
end if
end sub
</script>
<form runat=server >
<asp:DataGrid id="MyDataGrid" runat=server/>
</form>
IV. 用DataReader对象查询数据
<%@Import namespace=”System.Data”%>
<%@Import namespace=”System.Data.OleDb”%>
<html>
<script language=”vb” runat=server>
Sub Page_Load(Source as Object,E as EventArgs)
Dim oleconnection as New oledbConnection(“provider=SQLOLEDB; database=数据库名称;user id=用户名(sa)”)
Dim olecommand as New oledbCommand
Dim oledatareader as oledbDatareader
Oleconnection.Open
Olecommand.Connection=oleconnection
Olecommand.CommandText=”select * from student”
Oledatareader=olecommand.ExecuteReader
While oledatareader.Read
Labcontent.Text=labcontent.Text&oledatareader.GetString(“0”)&”<br>” ‘获取字符类型字段
Labcontent.Text=labcontent.Text&oledatareader.GetString(“1”)&”<br>”
Labcontent.Text=labcontent.Text&oledatareader.GetInt32(“2”)&”<br>” ‘获取整数类型字段
Labcontent.Text=labcontent.Text&oledatareader.Item(“address”)&”<br>” ‘使用字段名获取
End While
Olecommand=nothing
Oleconnection.Close
Oleconnection=nothing
Labcontent.Text= Labcontent.Text&”查找成功”
End Sub
</script>
<body>
<form runat=server>
<asp:label id=labcontext runat=server/><br>
</form>
</body>
</html>
注:
①.GetString :获取字符类型字段
②.GetInt32 :获取整数类型字段
③.GetBoolean :获得布尔类型的数据
④.GetDateTime:获得时间类型的数据
⑤.GetFloat :获得浮点类型数据
⑥.GetName :获得字段的名字
- ASP.NET(VB.NET)学习笔记--第六章.访问数据库(1/3)
- ASP.NET(VB.NET)学习笔记--第六章.访问数据库(3/3)
- ASP.NET(VB.NET)学习笔记--第六章.访问数据库(2/3)
- ASP.NET(VB.NET)学习笔记--第二章.控件(1/3)
- ASP.NET(VB.NET)学习笔记--第二章.控件(3/3)
- ASP.NET(VB.NET)学习笔记--第二章.控件(2/3)
- ASP.NET(VB.NET)学习笔记--第三章.ASP.NET常用的内置对象
- ASP.NET(VB.NET)学习笔记--第五章.ASP.NET的其他Web控件
- ASP.NET(VB.NET)学习笔记--第四章.命名空间
- ASP.NET MVC4 IN ACTION学习笔记-第六波[Ajax in ASP.NET MVC][1/3]
- asp.net学习笔记之数据库访问技术
- ASP.NET(VB.NET)学习笔记--第一章.语法基础
- 第六章 ASP.NET应用实例 -- 学习笔记
- ASP.NET MVC4 IN ACTION学习笔记-第六波[Ajax in ASP.NET MVC][3/3]
- ASP.NET MVC4 IN ACTION学习笔记-第六波[Ajax in ASP.NET MVC][2/3]
- VB.NET学习笔记(3)
- VB.NET学习笔记(1)
- asp.net 访问数据库
- edit中只能输入数字并且只能输入一个小数点
- 未能写入输出文件“c:/WINDOWS/Microsoft.NET/***.dll”错误处理
- 如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
- ASP.NET(VB.NET)学习笔记--第五章.ASP.NET的其他Web控件
- C++中灵巧指针auto_ptr
- ASP.NET(VB.NET)学习笔记--第六章.访问数据库(1/3)
- jboss 和tomcat 下发布webservice客户端
- ASP.NET(VB.NET)学习笔记--第六章.访问数据库(2/3)
- SQLServer索引类型
- DataList手动绑定控件及获取绑定控件值
- ASP.NET(VB.NET)学习笔记--第六章.访问数据库(3/3)
- Vista下IIS7的http 500 错误和 ‘ASP 0131‘错误
- 重读 .NET 3.x 新特性--(一).隐含类型局部变量
- 重读 .NET 3.x 新特性--(二).扩展方法