首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> J2EE >> Servlet/Jsp >> 正文

介绍JSP中表单数据存储应用的一种通用方法

    3)非关键字段部分sql语句生成

    update语句,如:update table1 set column1=value1,… where id=100

    insert语句,如:insert into table1(id,column1,…)values(100,value1,…)

    updateSql="update "+tablename+" set ";

    strSql="SELECT column_name,data_type,data_length,data_precision,data_scale

    FROM  v_dbstru a "+"where table_name='"+tablename+"' AND a.column_name

    not in (SELECT  b.column_name FROM v_pkey_column b

    where b.table_name=a.table_name)";rs1=Stmt.executeQuery(strSql);

    //取非关键字段字段名和数据类型

    while(rs1.next()){

    fieldname=rs1.getString("column_name");

    Datatype=rs1.getString("data_type");

    sFieldValue=request.getParameter(fieldname.toLowerCase());

    //若表单未提交该字段的值,则忽略该字段的处理

    if((sFieldValue!=null)){

    //生成insert语句=insSql1+insSql2 即insert into tablename(… 和 values(…

    if(OperType.equals("insert")){

    insSql1+=fieldname+",";

    if(Datatype.equals("DATE")){

    insSql2+= "To_Date('" + sFieldValue + "','YYYY-MM-DD'),";

    }

    else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){

    insSql2+="'" + sFieldValue+"',";

    }else /*NUMBER, FLOAT*/ insSql2+= sFieldValue+",";}

    //生成update语句=updateSql+whereSql 即update tablename set …… where fieldname=……

    if(OperType.equals("update")){

    if(Datatype.equals("DATE")){

    updateSql+=fieldname+"=To_Date('" + sFieldValue + "','YYYY-MM-DD'),";

    }else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){

    updateSql+=fieldname+"='" + sFieldValue,1}+"',";

    }

    else /*NUMBER, FLOAT*/ updateSql+=fieldname+"="+sFieldValue+",";} ))

    rs1.close();

    4)生成完整的sql语句并执行

    if(OperType.equals("insert"))

    opSql=insSql1.substring(0,insSql1.length()-1)+")"+

    insSql2.substring(0,insSql2.length()-1)+")";

    if(OperType.equals("update"))

    opSql=updateSql.substring(0,updateSql.length()-1)+

    " "+whereSql;if(OperType.equals("delete")) opSql="delete FROM "+tablename+" "+whereSql;

    //已生成完整的sql语句opSql

    try{

    sqlnrows=Stmt.executeUpdate(opSql);

    } catch(SQLException e){

    out.println("SQLException:"+opSql);

    }

    4、特点

    该方法对所有这种直接存储的表单都统一使用本程序,具有通用性,不必对每个表单或每个数据表独立开发相应程序,开发工作量非常少,调用也非常简便。同时,在表结构变动时,不用修改DBdataStore.jsp程序。本程序也可改写为Servelet,调用格式为<Form Name=Frm1 Method=Post Action="DBdataStoreServelet?tablename=table1&OperType=…">。

    结束语

    在Web应用中,如果表单数据在提交后,还需要服务器后台作进一步的数据校验或处理,则需要采用第二种方法。但很多情况是用户在表单中输入或修改数据,在前台浏览器端使用javascript对数据进行简单校验或处理,然后提交,在后台服务器端不作任何处理,直接将表单提交的数据存储到数据库的一个表中。这时候采用第三种方法非常简便,可以大大减轻开发人员的工作量。

上一页  [1] [2] [3] 

【责编:Ken】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航