在操作类型为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对数据进行简单校验或处理,然后提交,在后台服务器端不作任何处理,直接将表单提交的数据存储到数据库的一个表中。这时候采用第三种方法非常简便,可以大大减轻开发人员的工作量。