2024年1月15日发(作者:)

动态网页修改数据库数据

JSP动态网页连接访问数据库,修改数据的操作一般有两种方式,一种是用于前台的,只能修改数据库表中的一条记录;另一种是用于后台系统管理员操作使用的,可以方便的修改表中的任何一条记录。本节分别对两种进行介绍。

一、 范例的演示和代码清单

演示的前提和前几节完全相同。

演示步骤:

1. 启动IE,在地址栏键入127.0.0.1:8080/ch4/,用户名处,输入数据库表中,已经存在的一个用户名;密码处输入对应的密码。如图4-60所示窗口:

图4-60

2. 单击“提交”按钮。出现该用户所有资料的列表,其中用户名和密码两项,注有“不能更改”提示,其他项目都可以进行修改的操作。如图4-61所示窗口:

图4-61

3. 在对应的文本框中,将需要变动的数据进行修改,然后单击“修改”按钮。屏幕出现修改成功的信息,以及修改后数据列表。如图4-62所示窗口:

图4-62

4. 至此一条指定的数据记录修改完成。这属于一般用于前台,用户修改自己的注册资料用的修改方式。用于后台的系统管理员修改方式,请在此单击“返回浏览修改”,或返回主页后,单击“浏览修改”。出现浏览修改的界面。如图4-63所示窗口:

图4-63

5. 网页窗口显示的是,数据库表中的所有数据记录。并且在每一条记录的后面,有一个“修改”的链接。单击任何一条数据记录后面的“修改”,进入数据修改界面。如图4-64所示窗口:

图4-64

6. 这个网页窗口和前面单独修改一条记录的图4-61界面一样,只是数据内容不同。它们实际上是调用的同一个JSP动态网页。改动某些数据后,单击“修改”按钮。出现修改成功的信息,以及修改后数据列表。如图4-65所示窗口:

图4-65

7. 这个网页窗口和前面单独修改一条记录成功的图4-62界面一样,只是数据内容不同。它们实际上也是调用的同一个JSP动态网页。单击“返回浏览修改”,可以进行下一条记录的修改。

这个范例由四个网页构成:

1. :用表单的形式,提供需要修改数据记录的用户名、密码,表单的action指向。同时又是“浏览修改”的入口,链接指向。

2. :连接数据库,查询找到需要修改的数据记录。将每个字段数据,放入一个表单,供用户进行修改。修改的数据,提交后交给去更新数据库表中的数据记录。(这是本范例的重点网页)

3. :从获得数据,连接数据库,使用SQL更新语句,修改指定记录的数据。然后再查询数据库,从表中读取更新的数据记录,送到屏幕上显示。

4. :“浏览修改”的操作界面,设计的思路是,查询数据库表中所有数据记录,在显示界面,将每条记录的尾部添加一个“修改”链接。这个链接指向,用户点击“修改”链接时,同时将该条记录中的“用户名”、“密码”一并提交给。

四个网页的代码如下:

◇-◇-◇-◇-◇-◇-◇-◇-◇-◇ 修改数据库

◇-◇-◇-◇-◇-◇-◇-◇-◇-◇

范例

1)

2)

3)

4)

5)

6)

7)

8)

9)

修改数据库

10)

11)

12)

valign="top">

action="">

14)

单独修改请输入:  

13)

width="70"

width="459"

height="159"

name="form1"

align="center"

method="post"

valign="top"> 

15)

16)

17)

18)

19)

20)

21)

22)

23)

24)

25)

26)

27)

28)

29)

30)

31)

32)

33)

34)

35)

用户名:
密码:

name="password">

 

name="Submit" value="提交">

 

36)

37)  

38)

39)

40) 浏览修改

41)  

42)

43)

44)

45)  

46)

47)

48)

49)

colspan="2" valign="top">

◇-◇-◇-◇-◇-◇-◇-◇-◇-◇ 修改数据

◇-◇-◇-◇-◇-◇-◇-◇-◇-◇

范例

1)

2)

3)

4)

5)

6)

7)

8)

9)

<%@page

修改数据

<%

String name=ameter("name");

contentType="text/html;charset=gb2312" language="java"

import=".*" %>

10) String password=ameter("password");

11) e("bcDriver");

12) String url="jdbc:odbc:ch4";

13) Connection con=nection(url,"","");

14) Statement st=Statement();

15) String strSql="select * from st where 姓名='"+name+"' and 密码='"+password+"'";

16) ResultSet rs=eQuery(strSql);

17) if (!())

18) {("用户名或密码输入错误!");%>

19)

返回修改页面

20) <%return;}

21) %>

22)

23)

24)

25)

26)

27)

28)

29)

73)

74)

75)

76)

77)

78)

79)

80)

color="#000000" size="4" face="幼圆">请修改信息内容

 
 

action="">

30)

31)

32)

33)

36)

37)

38)

39)

40)

41)

42)

43)

44)

45)

46)

47)

48)

49)

50)

51)

52)

53)

54)

55)

56)

57)

58)

59)

60)

61)

62)

63)

64)

65)

66)

67)

68)

69)

70)

71)

用户名: <%=name%> 

34) ">

35)   

不能更改
密码: <%=password%> 

name="password" type="hidden" id="password" value="<%=ing("密码")%>">

不能更改
班级:

value="<%=ing("班级")%>">

学号:

value="<%=ing("学号")%>">

性别:

value="<%=ing("性别")%>">

E-mail:

id="email" value="<%=ing("Email")%>">

 

value="修改">

 

value="重填">

 

72)

 
   

81) <%();

82) ();%>

83)

84)

◇-◇-◇-◇-◇-◇-◇-◇-◇-◇ 修改数据

◇-◇-◇-◇-◇-◇-◇-◇-◇-◇

范例

1)

2)

3)

4)

5)

6)

7)

8)

9)

修改数据

<%@page

<%

String name=ameter("name");

contentType="text/html;charset=gb2312" language="java"

import=".*" %>

10) String password=ameter("password");

11) String sex=ameter("sex");

12) String clas=ameter("clas");

13) String na=ameter("na");

14) String email=ameter("email");

15) e("bcDriver");

16) String url="jdbc:odbc:ch4";

17) Connection con=nection(url,"","");

18) if(("")||("")||("")||(""))

19) { ("不能将信息修改为空值!");

20) return;}

21) %>

22) <%Statement stmt=Statement();

23) String sql="update st

24) eUpdate(sql);

25) Statement st=Statement();

26) String strSql="select * from st where 姓名='"+name+"'";

27) ResultSet rs=eQuery(strSql);

28) if(!())

29) return;

set 班级='"+clas+"',学号='"+na+"',性别='"+sex+"',Email='"+email+"' where 姓名='"+name+"' and 密码='"+password+"'";

30) %>

31)

信息修改成功!

修改后的信息为:

32)

33)

34)

35)

36)

37)

38)

39)

40)

41)

42)

43)

44)

45)

46)

47)

48)

49)

50)

51)

52)

53)

54)

55)

56)

57)

班级:

<%(ing("班级"));%>

学号:

<%(ing("学号"));%>

姓名:

<%(ing("姓名"));%>

性别:

<%(ing("性别"));%>

密码:

<%(ing("密码"));%>

E-mail:

<%(ing("email"));%>

58)

返回主页

59)

返回浏览修改

60) <%

61) ();

62) ();

63) ();

64) %>

65)

66)

◇-◇-◇-◇-◇-◇-◇-◇-◇-◇ 浏览修改数据

◇-◇-◇-◇-◇-◇-◇-◇-◇-◇

范例

1)

2)

3)

4)

5)

6)

7)

8)

9)

浏览修改数据

<%@page contentType="text/html;charset=gb2312" import=".*"%>

String DBDriver="bcDriver";

String ConnStr="jdbc:odbc:ch4";

String sql="select * from st";

String temp1,temp2,temp3,temp4,temp5,temp6;

e(DBDriver);

Connection conn=nection(ConnStr," "," ");

ResultSet rs;

Statement stmt=Statement();

rs=eQuery(sql);

n("数据库中数据如下:

");

n("

");

("

");

31)

32)

33)

34)

35) %>

36)

班级学号姓while(())

{

temp1=ing(1);

temp2=ing(2);

temp3=ing(3);

temp4=ing(4);

temp5=ing(5);

temp6=ing(6);

10) <%

11)

12)

13)

14)

15)

16)

17)

18)

19)

20)

21)

22)

23)

24)

25)

26)

27)

28)

29)

30)

性别密码E-mail修改
"+temp1+""+temp2+"" +temp3

+"

" +temp4 +"" +temp5 +""+temp6+"

href='?name="+temp3+"&password="+temp5+"'>修改

37)

 

38)

39)

}

();

();

();

二、 网页重点代码的分析

静态网页(输入修改对象):

:本范例的起始网页。网页的主体是一个表单(单独修改),让用户输入需

要修改数据记录对应的用户名和密码,表单的action指向。

表单下面,有一个链接“浏览修改”的入口,指向。

这个网页很简单,不再作具体分析。需要说明的是,在实际的网站设计中,“单独修改”和“浏览修改”不会设计到同一个页面上。“单独修改”是针对用户使用的,必须通过验证用户名和密码,以避免资料被他人非法修改。“浏览修改”是提供给系统管理员使用的,属于后台管理的组成部分,应该有方便批量处理数据的能力。

提取修改对象数据,提供修改界面,的代码分析:

这个动态网页提供用户修改数据的界面,由以下几个部分构成:

第一部分: 获得提交的数据。(第9-10行)

9) String name=ameter("name");

10) String password=ameter("password");

将用户提交的用户名和密码数据,赋值给JSP变量name和password。

第二部分: 链接数据库。(第11-13行)

11) e("bcDriver");

12) String url="jdbc:odbc:ch4";

13) Connection con=nection(url,"","");

第11行:加载JDBC-ODBC驱动;

第12行:定义一个字符串url,指明数据源,为连接数据库进行准备;

第13行:连接数据库。

需要说明的是,这里没有使用异常的抛出和捕捉机制,使得代码行非常简练。但是连接数据库的操作有误时,程序将被挂起。

第三部分: 从数据库表中提取需要修改的数据。(第14-21行)

14) Statement st=Statement();

15) String strSql="select * from st where 姓名='"+name+"' and 密码='"+password+"'";

16) ResultSet rs=eQuery(strSql);

17) if (!())

18) {("用户名或密码输入错误!");%>

19)

返回修改页面

20) <%return;}

21) %>

第14行:为运行SQL语句,准备一个对象st。(注意:这里的对象st和表st使用了同样的名称,但它们不是一回事。编制代码时,应注意避免这种情况发生)

第15行:准备查询用的SQL语句,赋值给字符串变量strSql

SQL语句是标准的复合条件查询语句,含义为,在st表中查询“姓名”、“密码”两个字段的值,都符合用户输入条件的数据记录。

第16行:运行SQL语句,将符合条件的数据记录,放入结果集rs中。

第17-20行:拦截错误数据的代码。如果用户输入的用户名不存在,或者是密码错误,在SQL查询语句运行时,就找不到相应的数据记录,数据指针移动到最后,“!()”条件成立,程序运行第18-20行,提示用户返回重新输入用户名和密码。

第四部分: 用户修改数据界面。(第22-80行)。

采用方法是,将查询获得的数据,放入一个表单,使用户能够修改,修改后提交给更新数据库的记录。具体的设计方法是,在Dreamweaver图形设计方式下,依据

数据库表中的字段项目,在前三部分代码行之后,创建一个表单,如图4-66所示:

图4-66

每个表单项的属性设置,如表4-2所示:

用户名:

密码:

班级:

学号:

性别:

E-mail:

Type

(类型)

hidden(隐藏)

hidden(隐藏)

text (文本)

text (文本)

text (文本)

text (文本)

Name

(表单项名称)

name

password

clas

na

sex

email

Value

(初始值)

<%=ing("姓名")%>

<%=ing("密码")%>

<%=ing("班级")%>

<%=ing("学号")%>

<%=ing("性别")%>

<%=ing("Email")%>

表4-2

每个表单项的初始值,设定为从结果集rs中读取的对应数据(也就是数据库表中的字段值)。有初始值的表单项,运行时显示初始值,这样就把需要修改的数据,从数据库表中提取出来,放置到了表单中。允许用户修改的项目(班级、学号、性别、E-mail),将表单项的类型设置为text(文本框),不允许用户修改的项目(用户名、密码),将表单项的类型设置为hidden(隐藏域)。表单中文本框的数据,可以随意修改。而隐藏域中的数据,屏幕不显示,无法进行改动。

为了整齐美观,将表单放置在表格当中。又考虑到,不允许用户修改的项目(用户名、密码)在运行时屏幕不显示,会造成用户操作不便。于是在隐藏域所在单元格中,添加了可显示而不能修改的对应变量。第33行的<%=name%> 和第40行的<%=password%>。

表单的action指向。

第五部分: 关闭rs和st两个对象。(第81-82行)

81) <%();

82) ();%>

这个动态网页,在使用Dreamweaver编制设计的过程中,需要在“代码”和“设计”两种方式下切换几次。第四部分的表单,主要在图形“设计”方式下进行,而33行的<%=name%> 和40行的<%=password%>的插入,又只能在“代码”方式下进行。

更新修改数据库数据,ch4-52jsp的代码分析:

这个动态网页,接收提交的修改数据,并用这些数据更新修改数据库表中的记录。修改完成后,再从数据库读取更新后的数据记录,送到屏幕显示。具体构成如下:

第一部分: 获得提交的修改数据(第9-14行)

9) String name=ameter("name");

10) String password=ameter("password");

11) String sex=ameter("sex");

12) String clas=ameter("clas");

13) String na=ameter("na");

14) String email=ameter("email");

第二部分: 连接数据库。(第15-17行)

15) e("bcDriver");

16) String url="jdbc:odbc:ch4";

17) Connection con=nection(url,"","");

第三部分: 拦截非法修改的数据(18-20行)

18) if(("")||("")||("")||(""))

19) { ("不能将信息修改为空值!");

20) return;}

21) %>

第18行,判断用户在修改数据时,如果将数据删除,形成了空值,就执行第19-20行代码,提示用户“不能将信息修改为空值”

第四部分: 更新修改数据库表中的记录(22-24行)

22) <%Statement stmt=Statement();

23) String sql=”update st set 班级=’”+clas+”’,学号=’”+na+”’,性别=’”+sex+”’,Email=’”+email+”’ where 姓名=’”+name+”’ and

密码=’”+password+”’”;

24) eUpdate(sql);

第22行,为运行SQL语句,创建一个对象stmt,

第23行,将更新数据库表中记录的SQL语句,赋值给字符串变量sql。

语句的含义为,更新st表中“姓名”和“密码”字段的值都符合条件的数据记录,用clas的值更新“班级”字段,用na的值更新“学号”字段,用sex的值更新“性别”字段,用email的值更新“Email”字段。

第24行,运行SQL语句,更新修改数据库

第五部分: 从数据库提取修改后的数据(第25-30)

25) Statement st=Statement();

26) String strSql="select * from st where 姓名='"+name+"'";

27) ResultSet rs=eQuery(strSql);

28) if(!())

29) return;

30) %>

第25行,为运行SQL语句,创建一个对象st,

第26行,将查询被修改数据记录的SQL语句,赋值给字符串变量strSql。

第27行,运行SQL语句,将查询的结果放入结果集rs

第28-29行,查找完成后返回,停止语句运行,避免程序挂起出错。

第六部分: 从结果集中,提取被修改数据记录,送到屏幕显示(第31-57)

这部分在Dreamweaver图形“设计”方式下进行,创建一个六行两列的表格,第一列是每个字段的名称,第二列是从结果集rs中提取的对应数据,见图4-67所示:

图4-67

第二列添入对应数据,要切换到Dreamweaver “设计”方式下进行,具体添入的数据,在代码的第35行、39行、43行、47行、51、55行。

35) <%(ing("班级"));%>

39) <%(ing("学号"));%>

43) <%(ing("姓名"));%>

47) <%(ing("性别"));%>

51) <%(ing("密码"));%>

55) <%(ing("email"));%>

第35行的代码<%(ing("班级"));%>是在对应的单元格显示输出结果集rs中“班级”的内容。其他各行的作用等同。

<%(ing("班级"));%>也可以书写成<%=ing("班级")%>,这是前面范例介绍过两种不同书写方式的JSP语句,它们的作用相同。

第七部分: 关闭rs、st、stmt三个对象(第60-64行)

这里需要说明,前面范例的动态网页连接数据库后,或者只进行读取操作,查询数据;或者只进行写操作,写入数据。而在这个动态网页中,连接数据库后,先进行写操作,更新数据;然后又进行读操作,查询修改后的数据。连接一次,进行两种操作。这种代码在编写时要注意,要分别创建写操作对象stmt(第22行)和读操作对象st(第25行),两个对象不能重名,而且都产生于(第17行的)连接对象con。

浏览修改据,ch4-53jsp的代码分析:

这个动态网页演示时,可以方便的选择任何表中一条记录,点击“修改”,无需输入“用户名”和“密码”,直接进入修改界面。如果仔细观察网页,不难发现,它和前面查询全部数据的范例网页基本相同,只是在每一条数据记录后面,多了一个“修改”链接。它实际就是查询全部数据网页的简单变形。

在代码上也是添加了一些新代码,使之能够方便进入对应数据记录的修改界面。另外这

个网页,去掉了异常的抛出和捕捉的处理,删去了相关的代码。添加的新代码体现在代码行的第21行和第30行:

21) n("

");

30) ("

");

第21行:显示输出表格的首行,只在原来代码的基础上添加了一个单元格,单元格中添加了“修改”两个汉字,代码是

班级学号姓名性别密码E-mail修改
"+temp1+""+temp2+"

align=center>"+temp3+"

"+temp4+""+temp5+"

align=center>"+temp6+"

href='?name="+temp3+"&password="+temp5+"'>修改

修改

第30行:显示输出表中每一条记录,并在数据记录后面添加一个“修改”链接,添加的代码是

修改, 被添加代码的含义是,链接到,同时将temp3(姓名)的数值和temp5(密码)的数值也传送过去。temp3传给表单项name,temp5传给表单项password 。所有就能自动读取到,需要获得的数据了。这实际上是JSP的输入语句,注意它的格式,在被输入的文件名后,要有一个“?”,之后是该文件获得数据语句中的表单项名称,再之后的“=”等号后是传送的具体数据。

本文发布于:2024-01-15,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:修改数据记录数据库网页

发布评论

评论列表(有0条评论)
    福州电脑网_福州电脑维修_福州电脑之家_福州iThome

    福州电脑网_福州电脑维修_福州电脑之家_福州iThome

    福州电脑维修网(fzithome.com)专业的电脑维修,笔记本维修,上门维修各种电脑,笔记本,平板等,快速上门.电脑知识频道内容覆盖:计算机资讯,电脑基础应用知识,各种电脑故障维修学习,电脑外设产品维修维护,病毒,软件,硬件,常识.