WEB开发技术 第五章
5.4 SQL语句操作数据库
From,吴教育
Email,wujiaoyu@21cn.com
Q Q,188128997
课程引入与回顾
? 利用 Recordset对象可实现添加、删除或更新记录操作
? 利用 Recordset对象可实现数据记录的分页显示
目标
? 利用常见的 sql语句来操作数据库
? 利用 sql语句来实现精确和模糊查找
Select基本句型一
? Select 字段串列 from 数据表
? 如:
– Select * from 成绩单
– Select 学号,姓名 from 成绩单
– Select 学号,姓名,语文 +数学 +英语 as 总成绩 from 成绩单
Select基本句型二
? Select 字段串列 from 数据表 where 筛选条件
? 如:
– Select * from 成绩单 where asp>60
– Select * from 成绩单 where asp=300 or gre=300 or toefl=300
Select基本句型三
? Select 字段串列 from 数据表 order by 字段串列
? 如:
– Select * from 成绩单 order by gre
– Select * from 成绩单 order by gre,toefl
– Select * from 成绩单 order by tse desc
– Select top 5 * from 成绩单
示例程序 5-11.asp
<!--#include file=rstotab.asp -->
<%
DB = Request("DB")
If DB = Empty Then DB = "Sample.mdb"
SQL = Request("SQL")
If SQL = Empty Then SQL = "Select * From 成绩单 "
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(db)
Set rs = conn.Execute( sql )
%>
<HTML>
<BODY bgcolor=beige>
<FORM Action="5-11.asp" Method=POST>
数据库,<INPUT Type=Text Name=DB Value="<%=DB%>"><BR>
指令,<INPUT Type=Text Name=SQL Size = 60 Value="<%=SQL%>"><P>
<INPUT Type=Submit Value=" 执行 ">
</FORM>
<% If Not (rs Is Nothing) Then %>
<% rstotable rs%>
<%Else%>
<HR><FONT Color=Red>Select 指令错误 !</FONT>
<%End If%>
</BODY>
</HTML>
网站精确查询系统 程序一 main.asp
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &
Server.MapPath("sample.mdb")
Set rs = conn.Execute("成绩单 ")
%>
<form method="POST" action="handle.asp">
<%
Response.Write "<select size=1 name=name>"
While Not rs.EOF
Response.WRITE "<option>" & rs.Fields(1).Value & "</option>"
rs.MoveNext
Wend
Response.Write "</select>"
%>
<p><input type="submit" value="提交 " name="B1"><input type="reset" value="
全部重写 " name="B2"></p>
</form>
网站精确查询系统 程序二 handle.asp
<!--#include file=rstotab.asp -->
<%
DB = "Sample.mdb"
name = Request("name")
SQL = "Select * From 成绩单 where 姓名 ='"&name&"'"
response.write sql
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(db)
Set rs = conn.Execute( sql )
%>
<HTML>
<BODY bgcolor=beige>
<% If Not (rs Is Nothing) Then %>
<% rstotable rs%>
<%Else%>
<HR><FONT Color=Red>Select 指令错误 !</FONT>
<%End If%>
</BODY>
</HTML>
Like字句的使用
? 基本格式一,_匹配
– 姓名 like ‘_敏’
(姓名以敏结尾且字数为二的所有数据记录 )
? 基本格式二,%匹配
– 姓名 like ‘%敏 %’
(姓名中出现敏的所有数据记录 )
网站模糊查询系统示例
<!--#include file="RsToTab.asp" -->
<%
Criteria=Request("Criteria")
sql = "Select * From 黑名单 "
If Criteria <> "" Then
sql = sql & " Where 姓名 like "&"'%" & Criteria&"%'"
End If
%>
<html>
<head>
</head>
<body bgcolor="beige">
<h2 ALIGN="CENTER">实现网站的模糊查询,</h2>
<form action="mh.asp" method="GET">
<p>请输入人名的关键字,<input NAME="Criteria" Value="<%=Criteria%>" SIZE="40"><input
TYPE="Submit" VALUE="查询 "> </p>
</form>
<hr WIDTH="50%">
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("szg.mdb")
response.write sql
Set rs = conn.Execute(sql)
RsToTable rs
%>
</body>
</html>
SQL语言的基本操作指令
? Delete:删除数据记录
? Update:更新数据记录
? Insert into:增添数据记录
? Select into:建立新表
Delete语句
? 基本语法:
– Delete from 数据表 where 条件
例,delete from 成绩单 where gre=0
Update 语句
? 基本语法:
– update 数据表 set 字段值 =新值 where 条件
例 1,update 成绩单 set gre=gre^0.5*10
例 2,update 成绩单 set gre=gre^0.5*10 where 姓名 like ‘%敏 %’
例 3,update 成绩单 set gre=gre^0.5*10,tse=tse^0.5*10,asp=asp^0.5*10
Insert into语句
? 基本格式 1:
– Insert into 数据表 (字段串行 ) values(字段新值串行 )
? 基本格式 2:
– Insert into 数据表 (字段 1,字段 2,…) select …
例 1,insert into 成绩单 (学号,姓名,gre) values(1234,’周润发’,70)
例 2,insert into 成绩单 values(5678,’酒井发子’,70,80,90,90,
10)
例 3,insert into 黑名单 select * from 成绩单 where gre<600
Select into语句:建立新表
? 基本格式:
– Select 字段 into 新数据表名 from 数据表 where 条件
例 1,select * into 枪手 from 成绩单 where gre>=2300
Sql操作语言测试程序一
<!--#include file="adovbs.inc" -->
<%
xuehao=request("xuehao")
sql=request("sql")
if sql<>""then
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("sample.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
conn.Execute sql
Response.Redirect "display.asp"
end if
%>
<HTML>
<BODY bgcolor="beige">
<FORM Action=TestSQL.asp Method=POST>
指令,<INPUT Type=Text Name=SQL Size = 60 Value="<%=SQL%>"><P>
<INPUT Type=Submit Value=" 执行 ">
</FORM>
</BODY>
</HTML>
Sql操作语言测试程序二
<!--#include file="adovbs.inc" -->
<!--#include file="rstotab.asp"-->
<HTML>
<HEAD>
</HEAD>
<BODY bgcolor=beige>
<%
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("sample.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "成绩单 ",conn,adOpenDynamic,adLockPessimistic
rstotable rs
%>
</BODY>
</HTML>
参考资料
? <<ASP动态网站编程 >> 石志国 清华大学出版社
? <<ASP精解案例教程 >> 石志国 清华大学出版社
? <<ASP网络编程技术与实例 >> 胡标 人民邮电出版社
? <<网络程序设计 -ASP>> 尚俊杰 清华大学出版社
总结
? 学习了利用常见的 sql语句来操作数据库
? 利用 sql语句来实现精确和模糊查找
习题与作业
1,利用 connection对象,通过指定驱动程序的方
式与上次课所建立的 sql server中的学生成绩 库建
立连接,用 ASP页面实现向学生成绩库中增加新
的学生成绩、更新学生成绩、删除学生成绩等
功能