当前位置:编程学习 > C#/ASP.NET >>

ASP.net(VB)编程入门进阶[基础篇三]

答案:

在asp.net(vb)中使用ADO.NET

.net框架包含几个命名空间,其中有几十个用于数据库访问的类,主要有system.data.sqlclient和system.data.oledb两大类,这里我主要介绍小巧一点的system.data.oledb空间中的类,因为system.data.sqlclient只与microsoft sql server数据库一起工作,而前者是支持access或者oracle 数据库。

system.data.oledb名称空间包含以下这些类:
1:oledbconnection(代表一个打开的数据库连接)
2:oledbcommand(代表一个sql语句或存储过程)
3:oledbdatareader(代表从数据库查询返回的结果)

执行常见的数据库任务

在接下来的一些日子里面,我会陆续的写上如何创建和打开数据库,获取和显示数据库记录,添加新的数据库记录,更新数据库记录,删除数据库记录等。这些都是很基本的操作,但能令初学者心血彭湃的。呵呵。

当您使用microsoft access或者oracle,需要使用以下的页面指令来导入system.data.oledb命名空间:
 

<%@ import namespace = "system.data.oledb"%>


使用sql server数据库的链接的话是:
 

<%@ import namespace = "system.data.sqlclient"%>


打开数据库
要访问数据库,首先要创建和打开数据库链接,创建连接的方式看你的数据库类型,如下代码创建了一个sql数据库的连接:
 

<%@ import namespace = "system.data.sqlclient"%>
<script runat="server">
sub page_load
dim sqlconn as sqlconnection
sqlconn=new sqlconnection("server=localhost;uid=sa;pwd=sd;database=db")
sqlconn.open()
end sub
</script>


第一行导入命名空间,在page_load子例程中创建和打开,先创建一个名为sqlconn的实例,通过向sqlconnection类的构造器传递一个字符串参数,对sqlconn类进行初始化,最后通过sqlconnection类的open()方法实际打开链接。

同样的道理,我们可以类似的打开access的数据库,如下的代码:
 

<%@ import namespace ="system.data.oledb" %>
<srcipt runat="server">
sub page_load()
dim conn as oledbconnection
conn=new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=d:\web\web\net\data\db.mdb")
conn.open()
end sub
</srcipt>


在使用完数据库链接时,应尽快关闭它是很重要的,每个数据库都有连接数量的限制,关闭链接使它可以供其他的页面使用,应使用下面的语句关闭sqlconnection或者oledbconnection.:
yourconnname.close

[page_break]

从数据库表获取记录
在ASP.net页面中最常用的是SQL中的select语句:
 

select szd_first,szd_last
from site_data
where id='2'


在asp.net页面执行一个select语句需要以下4步完成:
1:创建和打开数据库
2:创建沂河代表sql select语句的数据库命令
3:用executereader()方法执行这个命令,并且返回一个datareader.
4:遍历datareader,显示查询的结果。

在使用ado.net查询中,查询的结果在一个datareader中返回,更准确的说,查询的结果由一个sqldatareader或oledbdatareader表示,datareader代表一个只向前的数据库记录流,这意味着datareader每次只代表一个记录,要想获取流中的下一个记录,必须调用read()方法,要想显示所有的记录,必须反复调用read()的方法,直到流的尾部,不能回头。例如asp里面的游标只向前移动。

下面的程序显示了sql server读取数据库的记录:
 

<%@ import namespace="system.data.sqlclient"%>
<%
dim sqlconn as sqlconnection
dim sqlcmd as sqlcommand
dim sqlreader as sqldatareader
sqlconn=new sqlconnection("server=localhost;uid=sa;pwd=sd;database=data")
sqlconn.open()
sqlcmd=new sqlcommand("select szd_first from site_data",sqlconn)
sqlreader=sqlcmd.executereader()
while sqlreader.read()
response.write("<li>")
response.write(sqlreader("szd_first"))
end while
sqlreader.close
sqlconn.close
%>


分析:先导入sql server的ado.net类需要的名称空间,然后创建一个数据库conn,这和asp相似,接着用一个sql select语句的sql字符串初始化sqlcmd对象,这个语句从名为site_data的表中读取所有的记录。然后调用sqlcommand类的executereader()方法执行这个命令,返回执行结果的sqlreader,然后遍历所有记录。

下面演示一个从access数据库里面读出数据的源码:
 

<%@ Page Language="VB" %>
<%@ import namespace="system.data.oledb"%>

<script runat="server">
sub page_load()
    dim conn as oledbconnection
    dim accmd as oledbcommand
    dim acreader as oledbdatareader
    conn= new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=d:\web\web\net\data\db.mdb")
    conn.open()
    accmd=new oledbcommand("select szd_lastname from site_n",conn)
    acreader=accmd.executereader()
    while acreader.read()
    response.write("<LI>" & acreader("szd_lastname"))    
    end while
    acreader.close
    conn.close
end sub

</script>



有时候,我们要查询符合条件的一条记录,如果按照上面的executereader,效率显然很差,这里介绍另外一种方法executescalar,在几张集聚功能的count,max,min等,这个例子:
 

    sub page_load()
         dim conn as oledbconnection
         dim accmd as oledbcommand
          conn= new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=d:\web\web\net\data\db.mdb")
         conn.open()
         accmd=new oledbcommand("select count(*) from site_n ",conn)
         actxt.text=accmd.executescalar()
         conn.close
    end sub


[page_break]

以下信息均是asp.net在access数据库中的测试结果



在查询中使用参数

在ado.net中使用oledbparameter类代表参数,command对象具有一个参数概念,代表它的所有参数,下面一个实例演示:
 

sub   button_click(s as object ,e as eventargs)
    dim conn as oledbconnection
    dim strselect as string
    dim ascmd as oledbcommand
    conn = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=d:\web\web\net\data\db.mdb")
    strselect = "select szd_lastname from site_n where szd_firstname=@szd_firstname "
    ascmd= new oledbcommand (strselect, conn)
    ascmd.parameters.add("@szd_firstname",txt.text)

    conn.open()
    cc.text= ascmd.executescalar()
    conn.close()
end sub


其中关键的思路是:打开数据库链接-------->赋值查询语句------->执行查询语句------->碰到参数时从表单获取------>执行结果显示--------->关闭数据库链接.


向数据库插入记录

这里使用的是sql的insert命令向数据库添加新记录,基本的语法是:
 

insert into tablename(column1,column2)  values(value1,value2)


主要要完成以下的三步:
1:创建和打开数据库链接
2:创建代表执行的sql insert语句的数据库命令。
3:用executenonquery(不从数据库返回任何记录,executereader()返回数据库记录)

如下

sub   post(s as object ,e as eventargs)
    dim conn as oledbconnection
    dim strselect as string
    dim ascmd as oledbcommand
    conn = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=d:\web\web\net\data\db.mdb")
    strselect = "insert into site_n ( szd_firstname , szd_lastname ) values ( @szd_firstname, @szd_lastname)"
    ascmd= new oledbcommand (strselect, conn)
    ascmd.parameters.add("@szd_firstname",firstname.text)
    ascmd.parameters.add("@szd_lastname",lastname.text)
    conn.open()
    ascmd.executenonquery()
    conn.close()
    response.write("插入数据成功,您插入的数据是:<hr/>")
    response.write("<h5>firstname:" & firstname.text & "</h5>")
    response.write("<h5>lastname:" &lastname.text & "</h5>")
end sub

‘------------------------
<form runat="server">
        firstname:<asp:TextBox id="firstname" runat="server"></asp:TextBox>
        lastname:<asp:TextBox id="lastname" runat="server"></asp:TextBox>
        <asp:Button id="Button1" onclick="post" runat="server" Text="post info" BackColor="#E0E0E0" BorderColor="WindowFrame"></asp:Button>
</form>


更新数据库记录
主要在sql语

上一个:ASP.net(VB)编程入门进阶[基础篇二]
下一个:HTML标记一览

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,