答案:在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标记一览