270 likes | 437 Views
ASP. Asp 存取数据库. 例如:开发一个在线的通讯录程序. 准备数据库. 建立一个数据库 address.mdb ,表为 tbAddress 为该数据库建立数据源 address. 设置数据库文件的权限,步骤如下: 对于 Windows XP 系统,如果安装时采用了 NTFS 文件系统,还要设置“ Internet 来宾帐户”可以完全控制该数据库文件。步骤如下:
E N D
ASP Asp存取数据库
准备数据库 • 建立一个数据库address.mdb ,表为tbAddress • 为该数据库建立数据源address
设置数据库文件的权限,步骤如下: 对于Windows XP系统,如果安装时采用了NTFS文件系统,还要设置“Internet来宾帐户”可以完全控制该数据库文件。步骤如下: 数据库文件单击右键/在快捷菜单/【属性】命令/“属性”对话框/【安全】标签/【组或用户名称】中选中“Internet来宾帐户”/“完全控制”等权限/【确定】按钮/。
连接数据库 • 用Connection对象连接数据库。具体连接方式有三种。 • 基于ODBC数据源的连接方式 <% Dim conn Set conn=Server.CreateObject("ADODB.Connection") conn.Open "address" %>
不用数据源的连接方式(连接字符串) : <% Dim conn Set conn=Server.CreateObject("ADODB.Connection") conn.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.MapPath("address.mdb")
基于OLE DB的连接方式 <% Dim conn Set conn=Server.CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("address.mdb")
想想?虚机空间和自主架设服务器二种情况,什么情况下用数据源方式,什么情况下用非数据源方式。想想?虚机空间和自主架设服务器二种情况,什么情况下用数据源方式,什么情况下用非数据源方式。
利用Select语句查询记录 • 利用Select语句查询记录。具体过程如下: • 利用Connection对象连接数据库。 • 利用Connection对象的Execute方法执行一条Select语句,该方法就会返回一个记录集对象(Recordset)。 • 所谓记录集,类似于一个数据库中的表,由若干列和若干行组成,可以看做一个虚拟的表。 • 在记录集中利用循环移动指针就可以依次读取所有的记录。
<html><body> <% Dim conn Set conn=Server.CreateObject("ADODB.Connection") conn.Open "address" '以下建立记录集,建立一个Recordset对象实例rs Dim rs Set rs=conn.Execute("Select * From tbAddress") '返回整个数据表 '以下利用表格显示记录集中的记录 %>
<table > <% Do While Not rs.Eof %> <tr> <td><%=rs("strName")%></td> <td><%=rs("strSex")%></td> <td><%=rs("intAge")%></td> <td><%=rs("strTel")%></td> <td><a href="mailto:<%=rs("strEmail")%>"><%=rs("strEmail")%></a> </td> <td><%=rs("strIntro")%></td> <td><%=rs("dtmSubmit")%></td> </tr> <% rs.MoveNext '将记录指针移动到下一条记录 Loop %> </table>
利用Insert语句添加记录 • 当希望增加一个新联系人时,就需要在数据库中添加一条记录,此时就需要用到SQL语言的Insert语句。 具体过程如下: • 利用Connection对象连接数据库。 • 利用Connection对象的Execute方法执行一条Insert语句,就可以在数据表中添加一条记录。
<% Dim conn Set conn=Server.CreateObject("ADODB.Connection") conn.Open "address" '以下利用Connection对象的Execute方法添加新记录 conn.Execute(“Insert Into tbAddress(strName,strSex,intAge,strTel,strEmail,strIntro,dtmSubmit) Values(‘黎世兵’,‘男’,21,‘6112211’,‘mm@372.net’,‘地理',#2008-8-8#)") Response.Write "已经成功添加" %>
利用Delete语句删除记录 • 当希望删除联系人时,就需要在数据库中删除记录,这就要用到SQL语言的Delete语句。 • 删除记录也是利用Connection对象的Execute方法,不过也不需要返回记录集对象,具体过程和添加记录非常相似。
<% Dim conn Set conn=Server.CreateObject("ADODB.Connection") conn.Open "address" '以下利用Connection对象的Execute方法删除记录 conn.Execute("Delete From tbAddress Where ID=1") Response.Write "已经成功删除" %>
利用Update语句更新记录 • 当需要更新某人的联系方式时,就需要用到SQL语言的Update语句。 • 更新记录也是利用Connection对象的Execute方法,不过也不需要返回记录集对象,具体过程和添加记录、删除记录都非常相似 。
<% Dim conn Set conn=Server.CreateObject("ADODB.Connection") conn.Open "address" '以下利用Connection对象的Execute方法更新记录 conn.Execute("Update tbAddress Set intAge=22,strTel='61223211' Where ID=2") Response.Write "已经成功更新" %>
深入学习 • 前面例子各自独立,没有构成网站整体, 例如删除记录ID号是动态的,再例如更新记录,是用户通过更新表单输入或选择更新信息,再传递给更新程序。
<td><a href="delete.asp?ID=<%=rs("ID")%>">删除</a></td> • <td><a href="update_form.asp?ID=<%=rs("ID")%>">更新</a></td>
利用Delete语句删除记录 • 在首页中单击【删除记录】超链接,就会执行该程序,执行完毕后立即再重定向首页。程序运行结果图略。
利用Update语句更新记录 • 更新记录包括两个文件:一个是表单文件update_form.asp,一个是更新执行程序update.asp。
<% Dim conn,strConn Set conn=Server.CreateObject("ADODB.Connection") strConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("address.mdb") conn.Open strConn '以下建立一个记录集对象实例rs,注意会用到传过来的ID Dim strSql,rs strSql="Select * From tbAddress Where ID=" & Request.QueryString("ID") Set rs=conn.Execute(strSql) %>
<form method="POST" action="update.asp" ><table border="1" width="80%" align="center"><tr> <td>姓名</td> <td><input type="text" name="txtName" size="20" value="<%=rs("strName")%>">*</td></tr><tr> <td>性别</td><td><input type="radio" name="rdoSex" value="男" <%If rs("strSex")="男" Then Response.Write "checked"%>>男<input type="radio" name="rdoSex" value="女" <%If rs("strSex")="女" Then Response.Write "checked"%>>女</td></tr><tr> <td>年龄</td><td><input type="text" name="txtAge" size="4" value="<%=rs("intAge")%>"></td></tr><tr> <td>电话</td> <td><input type="text" name="txtTel" size="20" value="<%=rs("strTel")%>">*</td> </tr><tr> <td>E-mail</td><td><input type="text" name="txtEmail" size="50" value="<%=rs("strEmail")%>"></td> </tr><tr><td>个人简介</td> <td><textarea name="txtIntro" rows="4" cols="50"><%=rs("strIntro")%></textarea></td></tr><tr> <td><input type="hidden" name="txtID" value="<%=rs("ID")%>"></td> <td><input type="submit" name="btnSubmit" value=" 确 定 "></td> </tr></table></form>
<% '只要有姓名和电话,就更新记录,否则给出错误信息 If Request.Form("txtName")<>"" And Request.Form("txtTel")<>"" Then '以下获取提交的表单数据 Dim ID,strName,strSex,intAge,strTel,strEmail,strIntro '声明几个变量 ID=Request.Form("txtID") '获取隐藏文本框传递过来的ID值 strName=Request.Form("txtName") '获取姓名 strSex=Request.Form("rdoSex") '获取性别 If Request.Form("txtAge")<>"" Then '获取年龄 intAge=Request.Form("txtAge") Else intAge=0 End If strTel=Request.Form("txtTel") '获取电话 strEmail=Request.Form("txtEmail") '获取E-mail strIntro=Request.Form("txtIntro") '获取个人简介 Dim conn,strConn Set conn=Server.CreateObject("ADODB.Connection") strConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("address.mdb") conn.Open strConn
'下面利用Execute方法更新记录,注意更新条件为隐藏文本框传过来的ID值'下面利用Execute方法更新记录,注意更新条件为隐藏文本框传过来的ID值 Dim strSql strSql="Update tbAddress Set strName='" & strName & "',strSex='" & strSex & "',intAge=" & intAge & ",strTel='" & strTel & "',strEmail='" & strEmail & "',strIntro='" & strIntro & "' Where ID=" & ID conn.Execute(strSql) Response.Redirect "index.asp" Else Response.Write "姓名和电话必须填写" Response.Write "<a href='index.asp'>重新填写</a>" End If %>