麻烦大家了,
自己在学习中做了一个简单数据库,可是做到其中的提取数据,修改后更新一处就怎么也更新不了,自己实在是看不出问题出在哪,只好麻烦大家看看了。
测试地址:
http://cx.cxyouth.net/ls/admin_view.asp
点击:修改数据
转到:http://cx.cxyouth.net/ls/Update_id.asp
在输入你要修改的学生编号: 那输入1-15、19-22的都有纪录。
---------------
以下是更新页面中的源代码:
updata.asp
1
2'Account = Request.FORM("Account")
3'Pwd = Request.FORM("Pwd")
4id = Request.FORM("id")
5
6'取表单数据
1
2
3Dim ShowSQL
4ShowSQL="select * from user where id=" & id
5SET ShowTable=dbconnection.EXECUTE(ShowSQL)
6
7'建立SQL查询语句,查询“客户”数据表中客户编号为输入的ID的所有记录。
8'将执行结果记录在变量ShowTable中。
9
1<html> <head>
2<title>ShowTable</title>
3<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
4</head>
5<body>
6<div align="center">
7<form action="update_view.asp" method="post" name="showtable">
8<table border="0" width="63%">
9<tr>
DO WHILE NOT ShowTable.EOF
1<!--使用do while ... loop循环保证取到所有符合条件的记录。-->
2<td width="46%">
3<div align="left">姓名:</div>
4</td>
5<td width="54%">
6<input ```"="" name="ID" size="20" type="hidden" value="```
7=ShowTable(" 客户编号")=""/>
'sql="Select * From 用户 where 客户编号='"&客户编号&"'"
'if rs.eof then
'Response.Write "<html><body><center><font size="5">没有这个客户,请查正<p>"
'Response.Write "<a href="update.htm">返回重输</a>"
'Response.Write "</p></font></center></body></html>"
1<!--这里用到一个小技巧,使用隐藏字段来传递数据,因为下一个操作需要使用这个ID号去更新记录,可以使用其它的方法,比如环境变量。相比较使用隐藏字段比较简单。 -->
2<input ```"="" name="name" name")="" size="20" type="text" value="```
3=ShowTable("/>
4</td>
5</tr>
6<tr>
7<td width="46%">性别:</td>
8<td width="54%">
9<!--
10<input type="text" name="sex" size="20" value="```
11=ShowTable("sex")
12```">
13\-->
14</td>
15</tr>
16<tr>
17<td width="46%">
18<div align="left">年龄:</div>
19</td>
20<td width="54%">
21<input ```"="" age")="" name="age" size="20" type="text" value="```
22=ShowTable("/>
23</td>
24</tr>
25<tr>
26<td valign="top" width="46%">电话:</td>
27<td width="54%">
28<input ```"="" name="tel" size="20" tel")="" type="text" value="```
29=ShowTable("/>
30</td>
31</tr>
32<tr>
33<td height="15"><br/>
34说明:
35<div align="left"></div>
36</td>
37<td height="15">
38<textarea cols="60" name="com" rows="15">```
39=ShowTable("com")
40```</textarea>
41<!--以上一句的作用是读取com 那个中的数据.注意它的写法和其它读取文本域中的数据的写法不同 -->
42</td>
ShowTable.movenext
loop
1</tr>
2<tr>
3<td colspan="2" height="15">
4<input name="Submit" type="submit" value="update"/>
5</td>
6</tr>
7</table>
8</form>
9</div>
10</body>
11</html>
1
2dbconnection.Close
3Set dbconnection = Nothing
updata_view.asp
1
2dim Showname
3dim Showage
4dim Showtel
5dim Showcom
6
7id = Request.FORM("id")
8Showname = Request.FORM("name")
9'sex = Request.FORM("sex")
10Showage = Request.FORM("age")
11Showtel = Request.FORM("tel")
12'Showcom = Request.FORM("com")
13'取得表单中的数据,其中ID就是上一步的隐藏字段传递过来的。
1
2
3Dim SQL
4SQL = "Update user " & "Set " & "name="
5SQL = SQL & "'" & Showname & "'" & ", "
6SQL = SQL & "age="
7SQL = SQL & "'" & Showage & "'" & ", "
8SQL = SQL & "tel="
9SQL = SQL & "'" & Showtel & "'" & ", "
10'SQL = SQL & "com="
11'SQL = SQL & "'" & Showcom & "'"
12SQL = SQL & " where id=" & id
13
14'建立SQL更新操作语句,更新所有字段。应与数据库一致。注意:在“客户”和“set”后面有个空格,where前面也有一个空格。
15
16dbconnection.Execute SQL
17
18'执行SQL操作。然后告诉用户更新成功。也可以使用Response.Redirect方法导向别的页面。
19
20Response.Write "
<html><body><center><font size="5">数据已经更新!<p>"
Response.Write "<a href="admin_view_access.asp">查看数据</a>"
Response.Write "</p></font></center></body></html>
1"
2Response.End
3dbconnection.Close
4Set dbconnection = Nothing
-----------
conn.asp源码
<%
dim conn
dim connstr
dim dbconnection
---------------------------------------------------------------
你的“AGE”字段是整型的吧?
将
SQL = SQL & "'" & Showage & "'" & ", "
改成
SQL = SQL & "" & Showage & "" & ", "
应该就可以了。
---------------------------------------------------------------
1<html> <head>
2<title>ShowTable</title>
3<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
4</head>
5<body>
6<div align="center">
7<form action="update_view.asp" method="post" name="showtable">
8<table border="0" width="63%">
9<tr>
10<!--使用do while ... loop循环保证取到所有符合条件的记录。-->
11<td width="46%">
12<div align="left">姓名:</div>
13</td>
14<td width="54%">
15<input name="ID" size="20" type="hidden" value=""/>
16这是你的页面代码? ▲没有ID值,所以你修改不了
17<!--这里用到一个小技巧,使用隐藏字段来传递数据,因为下一个操作需要使用这个ID号去更新记录,可以使用其它的方法,比如环境变量。相比较使用隐藏字段比较简单。 -->
18<input name="name" size="20" type="text" value="m"/>
19</td>
20</tr>
21<tr>
22<td width="46%">性别:</td>
23<td width="54%">
24<!--
25<input type="text" name="sex" size="20" value="False">
26\-->
27</td>
28</tr>
29<tr>
30<td width="46%">
31<div align="left">年龄:</div>
32</td>
33<td width="54%">
34<input name="age" size="20" type="text" value="3"/>
35</td>
36</tr>
37<tr>
38<td valign="top" width="46%">电话:</td>
39<td width="54%">
40<input name="tel" size="20" type="text" value="6"/>
41</td>
42</tr>
43<tr>
44<td height="15"><br/>
45说明:
46<div align="left"></div>
47</td>
48<td height="15">
49<textarea cols="60" name="com" rows="15"></textarea>
50<!--以上一句的作用是读取com 那个中的数据.注意它的写法和其它读取文本域中的数据的写法不同 -->
51</td>
52</tr>
53<tr>
54<td colspan="2" height="15">
55<input name="Submit" type="submit" value="update"/>
56</td>
57</tr>
58</table>
59</form>
60</div>
61</body>
62</html>
---------------------------------------------------------------
以上是你修改首页生成的html代码!
我查看了源代码时发现你的ID 隐藏字段里没有值
所以你在下一页面的Request.form("ID")接收不到:)
---------------------------------------------------------------
如 Andyken(浪荡闲人 Java学习中:) 所说,你的隐藏的ID值为空。
其实有个比较老土的调试方法是在update.asp页面里面先输出SQL语句,不进行数据库操作,把输出的SQL语句COPY到SQLSERVER的企业管理器里面执行一下。
---------------------------------------------------------------
Dim SQL
SQL = "Update user " & "Set " & "name="
SQL = SQL & "'" & Showname & "'" & ", "
SQL = SQL & "age="
SQL = SQL & "'" & Showage & "'" & ", "
SQL = SQL & "tel="
SQL = SQL & "'" & Showtel & "'" & ", " <--这里多了个逗号
'SQL = SQL & "com="
'SQL = SQL & "'" & Showcom & "'"
SQL = SQL & " where id=" & id
---------------------------------------------------------------
如果你对sql语句不熟悉的话建议你用数据集rs
like this:
Response.write trim(request.form("id"))
sql="select * from user where id="&trim(request.form("id"))
rs.open sql,Conn,1,3
'''''''''''''''''''''''''next is update datas' value
rs("name")=Showname
rs("age")=Showage
rs("tel")=Showtel
rs.update
rs.close
s