论坛积分策略 论坛VIP区开放申请 我爱电脑万人签名活动 原声大碟520欢迎你 广告位招租
发新话题
打印

[[ 其它 ]] 新手看招:JSP中表单数据存储的通用方法

新手看招:JSP中表单数据存储的通用方法

摘 要
5 f+ ]  _$ _6 D5 Q5 q电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站我爱电脑技术论坛* u" x% u3 C4 Z8 y- [6 t$ x$ B3 I
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站9 t) `6 Z, m9 h. Q3 ^
本文以Oracle数据库为例,介绍了在采用JSP技术开发WEB应用时一种简便通用的表单数据存储处理方法,以减轻开发工作量,同时提供了主要的程序代码。 . E" d9 P0 k3 x8 u2 Y( o& }/ l  Y

- d* U0 e" J. k  R! H9 }我爱电脑技术社区--打造最好的电脑技术自学交流平台我爱电脑技术论坛% d( M  u  V3 r9 I$ ~+ M0 b
引言 www.520diannao.com/ A# ?" I2 n2 t% }/ s1 }
www.520diannao.com( Q4 |* s2 L9 L4 k3 o; x$ P- s

- T  `; `8 o. y. QJ2EE(Java 2 Enterprise Edition)技术已广泛应用在Web应用开发中,其中的JavaBean、Servlet技术为开发者提供了更为清晰的开发环境,使用JSP技术表现页面,使用Servlet技术完成大量的业务处理,使用Bean来存储数据及一些业务处理。在WEB应用中,业务数据存储到数据库中的处理工作经常很繁重,其中一种主要的形式就是表单数据存储到数据库,整个应用处理过程牵涉到大量的这种数据存储操作,对每个表单都要单独编写相应的数据存储程序,花费了开发人员大量的时间和精力。采用什么方法来减轻表单数据存储的开发工作量是值得研究的问题。
" C  b) R. O( q2 H& g6 d+ p1 V6 a  P* y我爱电脑技术社区--打造最好的电脑技术自学交流平台电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站' D8 y  z8 X& I" C6 F

- m1 j* J* t; Y/ p两种常见的表单数据存储处理方法
% W+ t8 [# j: D: r9 T8 Z/ i8 Q1 _, S电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
) q, e, ^# V/ P" a+ fwww.520diannao.com8 g$ j9 t5 d* T$ n- b2 B
1、对每一表单都编写相应的程序代码 我爱电脑技术论坛9 ^1 `/ C2 k6 ~$ O+ v' b
8 b" B- b7 [. {, n4 @( @

8 v) W" j  g! @+ w0 G/ Z我爱电脑技术论坛在JSP页面或JavaBean或Servlet中,使用request. getparameter()函数逐一提取表单提交的数据,或编写相应的JavaBean,使用setProperty方法将数据自动取到JavaBean中,然后生成SQL语句(insert,update,delete),最后执行executeupdate()函数完成数据表存储。 - r7 m) i/ C3 j! a: `
www.520diannao.com9 t" D3 d2 X  L' I' n

7 O! O. e# S. w1 H7 Jwww.520diannao.com2、对每一数据表自动生成一个JavaBean程序代码 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站( {8 s1 R. j. W, u; w

' B8 y4 F+ N8 F3 h, K/ Q1 f, a打造最好的电脑自学交流论坛www.520diannao.com' A; z% q+ e! ?) g% I8 G
数据库系统必须支持用户能够读取表结构,并识别关键字段。利用面向对象快速开发工具,如PowerBuilder、Delphi等,自行开发一个java代码自动生成程序。在该程序中读取数据库表的结构:字段名、数据类型、数据长度,自动生成一个JavaBean代码。在该代码中定义与表中字段对应的同名变量,建立所有变量的setValue和getValue方法,建立insert、update、delete函数分别处理insert、update、delete的SQL语句生成和执行。 我爱电脑技术论坛) F' L% |! N0 s3 n/ Z; w5 |

+ n/ L# r8 I8 I" _3 e* ]我爱电脑技术社区--打造最好的电脑技术自学交流平台# d2 t* k+ l- a
在表单提交的数据处理页面中,编写如下代码,将表单数据存储到JavaBean中: 我爱电脑技术论坛) @  G- P# ]5 M4 x* v) X! T3 F! H4 N
9 K1 [7 ]9 S1 O" F

& D& q5 v, r( e7 r; P5 x) m电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站<jsp:useBean id="table" class="table1_bean" />
: j5 |4 u+ [9 P4 j我爱电脑技术论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台2 ?1 Z0 m- Q5 b5 [1 T
<jsp:setProperty name="table" property="*" />
2 V& w' I: B6 h4 Q我爱电脑技术社区--打造最好的电脑技术自学交流平台
* o9 E% l& `5 I8 I) `www.520diannao.com(注:table1_bean为上述自动生成的对应某一个表的JavaBean) ' O1 p  F# b2 E% ~* M6 D

+ i  _+ C: ^( l6 q& q& L% _我爱电脑技术社区--打造最好的电脑技术自学交流平台然后调用table1_bean中insert、update、delete函数完成数据表存储,并返回执行结果。如:
# s/ k# o, I3 t/ v电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站我爱电脑技术论坛  ]# N+ W+ d0 i( H  q4 \$ \- H
<%boolean success =table.insert(); %> 我爱电脑技术社区--打造最好的电脑技术自学交流平台  ]# r. [) y# p0 b: z

6 Q1 K9 U/ v9 ^" b7 S打造最好的电脑自学交流论坛$ h2 W, _0 }6 F  K+ Q
第一种方法简单直观,但对每一表单都需要编写相应的数据处理程序。对稍微大一点的应用,表单数量可能很多,开发工作量很大,开发工作效率低。表结构变动如增加、减少字段时,需修改相应的数据处理程序。 我爱电脑技术论坛% |1 Y. U9 p! _) C/ k
打造最好的电脑自学交流论坛! Q; V/ s. U% C% I6 Y6 H" K% O

& L! p8 |, z& a: V第二种方法相对第一种简便得多,每一数据表的数据处理由对应的JavaBean实现,JavaBean自动生成,不需编写,表结构变动时只需重新生成新的JavaBean,经java编译后覆盖原java类即可。但该方法需要开发JavaBean自动生成程序,表结构变动时JavaBean需要重新生成和编译。 ) X8 ~/ a3 J0 P, j/ E: m2 y; z
9 F: v1 d2 K# O, u( b0 w

% A' X4 `1 K; J( C& }* V我爱电脑技术论坛介绍一种简便通用的方法实现表单数据存储
6 A7 r+ j( k8 @. z- a* E我爱电脑技术社区--打造最好的电脑技术自学交流平台我爱电脑技术论坛. G& w, [# j1 Q% z& g1 E' T9 B

/ o% s8 L/ E* t) D0 t+ ^在WEB应用开发中,很多表单在经过前台浏览器端简单的数据校验后,提交后台服务器,服务器对数据不用作任何处理直接将数据存储到一个数据表中。对这种情况,我们可以只编写一个程序,对这些表单统一处理,将数据存储到相应的一个数据表中。该方法同样要求数据库系统支持表结构读取和关键字段识别。我们采用JSP技术编写该程序,程序文件取名为DbdataStore.jsp。

TOP

1、调用格式 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站3 s* y5 o. U4 z& B: \; O
. f' H4 n3 }) Q  h" K

: @% @7 h# P% j在网页中表单的Action调用方法如下:
+ j! O, ~" F7 n3 ^2 U: o
$ a3 P# z2 i# O( t电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
2 R- t& d4 L2 g! @电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站<Form Name=Frm1 Method=Post Action="DBdataStore.jsp? tablename=table1&OperType=…"> 4 B- i4 d" P1 _! s' _8 Q6 F

1 r8 w! f3 u, ~. i7 H电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站我爱电脑技术论坛4 N7 K; x! x- G. f
table1为数据将要存储的数据库表的表名,OperType操作类型分为三种:insert,update,delete。 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站, O" x7 w* C3 o9 H' r' X/ [' [& w' O

) u7 T2 c- ^5 {www.520diannao.com表单中的<input type=text name=…>,<textarea name=…><select name=…>等中的name值应与数据表的字段名相同,DBdataStore.jsp中逐一提取表单提交的对应字段名的数据值,若表单中未定义输入,得到的值为空值,则对该字段不作处理。 打造最好的电脑自学交流论坛9 l0 r, Q& K0 `1 p, A- Q- {, ?
" u, K% Z9 Z" a( |2 Q- y

3 ~4 w" t' Z: B' p  t我爱电脑技术论坛2、以oracle为例的视图定义
5 A/ z+ a6 @# |( o- Y7 N, \打造最好的电脑自学交流论坛
; F) W$ z4 d! r% ~打造最好的电脑自学交流论坛4 C4 Q0 ]+ l8 F: d1 b
1) 建立表各列数据类型视图
. Z$ ?; ~; k# ?( q, i- ]5 X我爱电脑技术论坛打造最好的电脑自学交流论坛# `1 b2 G# v9 u/ ^

7 E6 b$ a" Z* o* E" A- c: j% h电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站CREATE OR REPLACE VIEW v_dbstru AS SELECT table_name,column_name,data_type,data_length,data_precision,data_scale,column_id www.520diannao.com) J; N0 s# F1 S1 \- y
+ U, N6 X; k  ~/ m
FROM all_tab_columns WHERE owner='user1';//user1为数据表的属主。
# u# i; h+ r& Y/ U4 @% `" q我爱电脑技术社区--打造最好的电脑技术自学交流平台我爱电脑技术社区--打造最好的电脑技术自学交流平台# ~" {6 s( F8 z9 F
我爱电脑技术社区--打造最好的电脑技术自学交流平台4 {/ Z* A4 o; C! }' f1 j8 C2 L
2) 建立表的关键列视图 打造最好的电脑自学交流论坛5 N6 J4 P* t* l4 ^
我爱电脑技术论坛: R, x. w0 ^: a8 b$ T2 a* v

: L' |. Y: T! h, r; q9 V, R  |  w3 W% ?打造最好的电脑自学交流论坛CREATE OR REPLACE VIEW v_pkey_column AS
& i2 w2 c! k- c! c; Y4 H. C$ ^; b打造最好的电脑自学交流论坛
, s) g- \- \8 P" qwww.520diannao.comSELECT b.table_name,b.column_name,b.position 我爱电脑技术论坛( H5 C$ a% [: C" K" P& o( `5 y
打造最好的电脑自学交流论坛) n5 R9 H* e# H
FROM all_constraints a,all_cons_columns b 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站+ T- @% h9 L; O

4 ~1 b/ l$ Z) r2 z4 M7 R/ G0 o我爱电脑技术社区--打造最好的电脑技术自学交流平台WHERE a.owner=b.owner AND a.constraint_name=b.constraint_name AND a.owner='user1'  AND a.constraint_type='P'; 我爱电脑技术社区--打造最好的电脑技术自学交流平台0 A) I, i* c  [# v- w& \

  }2 l8 M6 T  G( u6 s打造最好的电脑自学交流论坛: Y5 k( {; A( s2 V- ^$ h3 U) @

6 _- F6 ?  k: A9 O电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站3、主要程序代码
- W! B- T0 Y; X& X* N9 g我爱电脑技术社区--打造最好的电脑技术自学交流平台5 t# ~5 a$ ]* b% f# F$ p" z( f
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站" ~, Q: C: w: z4 }" x/ o0 Y' M3 ~
1) 程序初始化
7 P# s6 W5 q4 \9 O5 L" T1 t- g我爱电脑技术论坛) O9 @8 ?+ z: Z! F: J: b7 U# `: A# c

; {7 m! B+ ?# H/ d: D我爱电脑技术社区--打造最好的电脑技术自学交流平台String tablename=request.getParameter("tablename");//提取表名
  f/ l9 {% \7 y; c' q! n$ J( G& ?6 b
$ l% ~* U: k# u  |8 s2 \我爱电脑技术论坛String OperType=request.getParameter("OperType");//提取操作类型 www.520diannao.com$ h! {% E$ R+ ^7 J& m# `
我爱电脑技术社区--打造最好的电脑技术自学交流平台) ~) ^3 r3 H# {4 B8 @( Z
String sFieldValue="";//存放表单提交的字段数据值 我爱电脑技术论坛3 q1 o6 G1 {4 y! O# ^" H
2 X# x' \+ \# t* W# B7 C8 d$ j
String fieldname="",Datatype="" //存放字段名,字段数据类型 我爱电脑技术论坛& `+ f3 z  k0 Q/ j1 [8 g
打造最好的电脑自学交流论坛$ C0 Z9 U$ }  N3 n2 g" }8 G$ I, ~6 C
int iFieldvalue=0;
5 V& i$ Y2 E8 l( a电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站我爱电脑技术论坛, p; {& V2 T6 x- \$ |
String updateSql="",whereSql=" where ",insSql1="",insSql2="",opSql="",strSql =""; 8 {+ V- G1 L" H  t& K7 a: y' ?* N

; n, ?3 l4 ~: j* l我爱电脑技术论坛ResultSet rs1=null,rs2=null; # J2 v0 E2 G) f

7 ]* E5 L: P) v' L* v! D7 ^" r3 Y打造最好的电脑自学交流论坛insSql1="insert into "+tablename+" ("; 我爱电脑技术论坛' j. p8 R3 _  P) L- |/ w6 q7 v
我爱电脑技术论坛9 O  f- w$ l) ~' P  _* `* E/ H
insSql2="values("; 6 J2 Z; r8 c5 S; |% L5 L6 i
我爱电脑技术论坛) ?, k; W# M3 t' F" ?1 \0 r

' i) c! C; t: ^7 Q+ l' q2)生成sql语句关键字段部分
( v0 v% n/ |6 U; r# q6 C$ l我爱电脑技术论坛
+ W: M. u$ W, v- p我爱电脑技术社区--打造最好的电脑技术自学交流平台6 k# X5 e* N: a2 b  y8 X
生成insert语句关键字段部分,如:insert into table1(id 和 values(100)); 打造最好的电脑自学交流论坛- ?- X# x; y4 p0 Y

! T4 w1 U3 ^! B0 `+ e% _打造最好的电脑自学交流论坛* h4 x: J' n/ g$ T5 k* m1 V/ \
只使用关键字段生成update,delete语句where部分,如:where id=100;

TOP

在操作类型为update时,网页form表单中不对关键字段的数据进行修改。 www.520diannao.com+ }3 Z, O3 @* F  I# E. X: y" B

4 W& Z9 P& x4 N电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站/ b) r: |) g! o8 b
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站" y- I% e/ r- {1 [9 G0 e
rs1=Stmt.executeQuery("SELECT column_name FROM v_pkey_column WHERE table_name='"+tablename+"'");我爱电脑技术社区--打造最好的电脑技术自学交流平台1 U# L0 c& z9 J4 G
//取关键字段字段名
% A9 N, ?) s7 x/ O" c0 v+ vwww.520diannao.comwhile(rs1.next()){
; z8 r/ \+ F. A, Z% j7 p电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 fieldname=rs1.getString("column_name");
2 i; x4 ]' `2 r, J, J rs2=Stmt.executeQuery("SELECT data_type FROM v_dbstru WHERE  table_name='"+tablename+"' " n% A; P% g. ]: p1 K9 z
AND column_name='"+fieldname+"'");//取关键字段数据类型
& W2 W4 H7 B" B5 M我爱电脑技术论坛 if(rs2.next()){电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站0 |9 O4 O% a- h* S2 ]6 h/ K
  Datatype=rs2.getString("data_type");www.520diannao.com0 t: j* k+ {# `+ Y  I, w
  sFieldValue=request.getParameter(fieldname.toLowerCase());我爱电脑技术社区--打造最好的电脑技术自学交流平台  t3 a: L; e3 V6 f- O: ?& V6 S9 ^" n
  //生成insert语句关键字段部分 , I5 d; W, |" Y. B2 n/ s
  if(OperType.equals("insert")){
- J; C. A# p% _' U我爱电脑技术社区--打造最好的电脑技术自学交流平台   insSql1+=fieldname+",";3 N1 G& u7 Y8 q8 J# c6 J' W1 Y; |
   if((sFieldValue==null) ){我爱电脑技术社区--打造最好的电脑技术自学交流平台" _# C! d: u- S+ {" l
    //表单未提交关键字段数据值时,本文只按数字型处理,数据值按下一流水号计算。 6 p) J- z& S4 K- c* Q
    rs2= Stmt. executeQuery("SELECT max("+fieldname+")+1 FROM "+tablename);
* B1 G- G1 \9 _+ P7 w9 N电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站rs2. next();iFieldvalue=rs2.getInt(1);insSql2+=Integer.toString(iFieldvalue)+",";
! `; `; {3 |& m  Q" h( i, c}else if(Datatype.equals("DATE")){
5 _( Y! C! g1 P3 T我爱电脑技术论坛    insSql2+= "To_Date('" + sFieldValue + "','YYYY-MM-DD'),";
% R* l0 }" n5 _! m4 q0 W电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站   }else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){www.520diannao.com6 e: g4 z) e7 o% |) j8 G9 ?+ c
insSql2+="'" + sFieldValue+"',";}打造最好的电脑自学交流论坛$ V/ P$ f  s7 N/ ]' P# Z
   else /*NUMBER,FLOAT */ insSql2+=sFieldValue+",";}
0 S4 n& f: [1 i  P电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站   //生成update,delete语句where部分:where fieldname=... AND
6 A8 e% b5 i$ F打造最好的电脑自学交流论坛   if(OperType.equals("update") || OperType.equals("delete")){
1 _/ C/ K$ q) \* r+ n我爱电脑技术论坛    if(Datatype.equals("DATE")){ 我爱电脑技术论坛" [# Z, k. Y8 E3 a3 n, I
     whereSql+=fieldname+"=To_Date('" + sFieldValue + "','YYYY-MM-DD') AND ";6 j% Y7 }6 v, |* r, Z4 H6 ]
    }else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){ 7 N$ ^0 _1 K, k% b
     whereSql+=fieldname+"='" + sFieldValue+"' AND ";}
' `0 }) T; C, k! E6 K! y- M& j" _www.520diannao.com    else /*NUMBER,FLOAT */ whereSql+=fieldname+"="+ sFieldValue+" AND ";}
! @2 _; B8 I# `) t  Jwww.520diannao.com  }
. U5 d# \8 T" O' s) G' W. j) H }& w7 r! j5 q0 ^  }
whereSql=whereSql.substring(0,whereSql.length()-4);
4 q( I8 l+ S9 s; J我爱电脑技术论坛
# z* c* Z$ r/ v! ~3 D1 y+ r电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站! |3 ^& Y$ ~* O

& Q; E9 e8 [& S+ `我爱电脑技术论坛3)非关键字段部分sql语句生成
: I1 U7 L' _/ v+ n我爱电脑技术论坛3 a  n& E! D  a" q1 M, k

! D) A1 L4 C5 F. \$ k电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站update语句,如:update table1 set column1=value1,… where id=100 打造最好的电脑自学交流论坛# K" l6 B; c' \" O% d

9 s- v, X5 h0 }1 A! F/ V  s2 cwww.520diannao.com
% f. |- [0 o/ U5 L$ a  p我爱电脑技术论坛insert语句,如:insert into table1(id,column1,…)values(100,value1,…)
: m) i* p7 i$ I+ c2 s+ }3 Ywww.520diannao.com我爱电脑技术社区--打造最好的电脑技术自学交流平台0 s. _/ R* |, C
我爱电脑技术社区--打造最好的电脑技术自学交流平台: q3 {9 G  {! k& g; F9 }- R9 P- N

! Z4 N: p- B8 N( b# YupdateSql="update "+tablename+" set ";我爱电脑技术论坛# I; h: o, B, ^0 n9 E
strSql="SELECT column_name,data_type,data_length,data_precision,data_scale FROM
0 t1 _# [7 ~! P; V! o9 H电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站v_dbstru a "+"where table_name='"+tablename+"'
6 c) D. G  j' x. d+ ~2 twww.520diannao.comAND a.column_name not in (SELECT
" o8 l7 p0 `- w- u0 W5 f打造最好的电脑自学交流论坛b.column_name FROM v_pkey_column b where b.table_name=a.table_name)";
- w* q, y+ [7 {我爱电脑技术社区--打造最好的电脑技术自学交流平台rs1=Stmt.executeQuery(strSql);//取非关键字段字段名和数据类型电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站6 S" k; t  `: E; I
while(rs1.next()){ 2 H# t. _5 U/ z" p1 T# O
 fieldname=rs1.getString("column_name");Datatype=rs1.getString("data_type");
+ w" V+ R- i- s4 _2 A& D5 l   sFieldValue=request.getParameter(fieldname.toLowerCase());
" _# V1 w5 x" ?我爱电脑技术社区--打造最好的电脑技术自学交流平台//若表单未提交该字段的值,则忽略该字段的处理
( z! I3 V8 D. i, D" R我爱电脑技术社区--打造最好的电脑技术自学交流平台 if((sFieldValue!=null)){
" a1 u* M  b0 x6 w! c我爱电脑技术社区--打造最好的电脑技术自学交流平台  //生成insert语句=insSql1+insSql2 即insert into tablename(… 和 values(…
+ M: }. j% j) i! f( n/ u打造最好的电脑自学交流论坛  if(OperType.equals("insert")){ insSql1+=fieldname+",";我爱电脑技术论坛; x( z: f: a) i$ A6 R
  if(Datatype.equals("DATE")){
, k( z/ V  r2 ]% R7 |* l2 O   insSql2+= "To_Date('" + sFieldValue + "','YYYY-MM-DD'),";
, b* h" O% }: r/ H- D1 t" x& r打造最好的电脑自学交流论坛  } else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){$ M% Z7 u7 |) ^) V1 f% J) \, \
   insSql2+="'" + sFieldValue+"',";}else /*NUMBER,FLOAT*/ insSql2+= sFieldValue+",";}
8 ~1 f" F) O. ]7 r电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  //生成update语句=updateSql+whereSql 即update tablename set ... where
7 q( S; s  h6 U7 N8 W电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站fieldname=... if(OperType.equals("update")){ 打造最好的电脑自学交流论坛. K( G  a; ^' D$ m
if(Datatype.equals("DATE")){我爱电脑技术社区--打造最好的电脑技术自学交流平台$ m! @2 q) u* P1 O$ R$ {
updateSql+=fieldname+"=To_Date('" + sFieldValue + "','YYYY-MM-DD'),";打造最好的电脑自学交流论坛' ]/ T# \  v" n+ d! C+ G4 Q
}else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){ : T' A' L1 b8 g4 u
updateSql+=fieldname+"='" + sFieldValue,1}+"',";}else /*NUMBER,FLOAT*/
, M1 M& y- v* S0 d+ M. N+ u" }  Z# E打造最好的电脑自学交流论坛updateSql+=fieldname+"="+sFieldValue+",";} )) 打造最好的电脑自学交流论坛' b, _8 q) a8 c$ v
 rs1.close();
3 ~8 S% v! x% {1 b打造最好的电脑自学交流论坛
# s4 l' }0 V, ?4 L打造最好的电脑自学交流论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站4 Z% g/ Q9 I3 Q' ~5 N: K  l

9 t2 \: m% D' a2 m# i; s( Twww.520diannao.com4)生成完整的sql语句并执行 我爱电脑技术论坛+ [3 N- B: B5 H3 G

: z# A. }5 t5 ?" ^7 j* ^: }电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站www.520diannao.com5 R- }. P% u) ~0 r6 D
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站' x- U: f% |* X% S0 I9 A8 o) O
if(OperType.equals("insert")) www.520diannao.com) ^( a: d) f9 |8 K0 _1 S1 d1 p3 f
 opSql=insSql1.substring(0,insSql1.length()-1)+")"+insSql2.substring(0,insSql2.length()-1)+")";电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站7 r' k* [/ k1 }, Q- \' a
if(OperType.equals("update"))
( @) M2 S: G# r打造最好的电脑自学交流论坛 opSql=updateSql.substring(0,updateSql.length()-1)+" "+whereSql;if(OperType.equals("delete"))
7 Y: s' A7 W1 Y, @% O5 A! _. X/ y电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 opSql="delete FROM "+tablename+" "+whereSql;; {9 m% J+ ]# k: h7 p: c
//已生成完整的sql语句opSql我爱电脑技术论坛/ }7 ]9 a9 o" q5 r9 L, H
try{sqlnrows=Stmt.executeUpdate(opSql);} 4 ~9 b5 H3 M+ @. ~: L( D
catch(SQLException e){out.println("SQLException:
9 T6 q5 p5 J( ?3 kwww.520diannao.com"+opSql);}
" I5 E8 ]0 x8 k" F/ s4 Q电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 我爱电脑技术论坛. L1 K- N9 {0 p+ R4 Z$ I9 T4 o

3 q( W) [# L: y, |打造最好的电脑自学交流论坛
! s* h1 ?# u1 Z. u/ W  R/ R/ I我爱电脑技术论坛4、特点 我爱电脑技术论坛5 l6 P, k: E( Q$ R9 \  d) k

; s# m5 U" W. w我爱电脑技术社区--打造最好的电脑技术自学交流平台3 B4 i$ I* z& S# p$ s5 @) T
该方法对所有这种直接存储的表单都统一使用本程序,具有通用性,不必对每个表单或每个数据表独立开发相应程序,开发工作量非常少,调用也非常简便。同时,在表结构变动时,不用修改DBdataStore.jsp程序。本程序也可改写为Servelet,调用格式为<Form Name=Frm1 Method=Post Action="DBdataStoreServelet?tablename=table1&OperType=…">。 我爱电脑技术论坛3 _7 Y1 _- L1 @# |  ^

: n- s8 g4 P/ Y7 k$ X  r我爱电脑技术社区--打造最好的电脑技术自学交流平台我爱电脑技术论坛2 H* T- ^3 ]3 U; Z
结束语
+ `% R8 e, @: u, i' L我爱电脑技术社区--打造最好的电脑技术自学交流平台# y1 p4 }- C' g3 ?$ l: f
打造最好的电脑自学交流论坛6 }" N3 f; W. {+ k6 F9 e  C% W& l
在Web应用中,如果表单数据在提交后,还需要服务器后台作进一步的数据校验或处理,则需要采用第二种方法。但很多情况是用户在表单中输入或修改数据,在前台浏览器端使用javascript对数据进行简单校验或处理,然后提交,在后台服务器端不作任何处理,直接将表单提交的数据存储到数据库的一个表中。这时候采用第三种方法非常简便,可以大大减轻开发人员的工作量。

TOP

发新话题