频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

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

来源: 作者:佚名 出处:巧巧读书 2008-03-27 进入讨论组
上一页 1 2 3 

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

更多文章 更多内容请看存储过程Jsp完全攻略专题JSP教程专栏专题,或进入讨论组讨论。
上一页 1 2 3 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章