标题:jsp实现后台提交编程代码自动生成器
作者:吕海鹏
来自:www.DeepTeach.com
摘要:这篇文章主要针对有一定jsp编程经验和SQL语句基础的爱好者,文章主要探讨如何自动调用数据库的表内字段,自动生成相关字段后台代码的编程代码,说白了就是自动生成动态网站jsp代码的代码。
........................
一、序
前几天抽空,到哈尔滨今日图灵计算机学校听了一堂张老师讲的jsp课程,内容满有趣的,简单的整理了一下课堂笔记,帖出来和大家分享一下,由于是张老师的讲课内容(那可是人家的版权啊!),这里我就给大家看个骨头了,剩下的肉(阐述方法、思想)。相信会者自然会悟出来,不会的--呵呵,接着修炼吧!
二、引言
目前的软件并不是自动生成的,一行行代码也不是自动生成的。那么,为什么我们不努力于自动生成的软件?为什么不努力于创造能够自动生成原来需要手写的一行行代码呢?这里张老师为我们提供了这样一个思路。
1、你能列出你数据库内的表里的相关字段么?
2、既然能列出来,你能否有选择地将对应的字段swich()...case n:{}中呢?
三、程序实现代码
1、列出数据库中的所有表
try { DatabaseMetaData dbmd = conn.getMetaData(); // 指定所需 信息的列表 String[] types = {"TABLE"}; rs1 = dbmd.getTables(null, null, "%", types); while (rs1.next()) { String tableName = rs1.getString(3); String tableCatalog = rs1.getString(1); String tableSchema = rs1.getString(2); out.println( tableName+"<BR>"); } } catch (SQLException e) { } |
<% if (request.getParameter("tableName")!=null) { sql1="select * from "+request.getParameter("tableName"); rs1=stmt1.executeQuery(sql1); ResultSetMetaData rmt; rmt = rs1.getMetaData() ; int columnCount = rmt.getColumnCount() ; out.println(columnCount+"<br>"); %> <FORM METHOD=POST ACTION=""> <table border="1"> <% for(int i=2;i<=columnCount;i++) //从2开始 略过 编号值 { %> <tr> <td><%=rmt.getColumnName(i).trim()%>:</td> //输出字段名 <td> <% switch( rmt.getColumnType(i) ) { case 1://char %> <INPUT TYPE="text" NAME="<%=rmt.getColumnName(i).trim()%>"><BR> <% break; case 4://int if(rmt.getColumnName(i).trim().endsWith("_id") ) { %> <SELECT NAME="<%=rmt.getColumnName(i).trim()%>"> <option > aa</option> </SELECT> <% } else { %> <INPUT TYPE="text" NAME="<%=rmt.getColumnName(i).trim()%>" onBlur="jiancha()"><BR> <% } break; case 12://vchar %> <textarea NAME="<%=rmt.getColumnName(i).trim()%>" cols="60" rows="6"></textarea> <% break; } %> </td> </tr> <% } %> <tr> <td colspan="2"> <INPUT TYPE="submit" value="提交"> <INPUT TYPE="reset" value="重置"> </td> </tr> </FORM> <% } %> |
更新日志:
2006-08-21 v0.1 初稿完成;
参考文档:
相关文档:
致谢:
哈尔滨今日图灵计算机学校 张老师(http://www.turingtoday.net/)
讨论网址:bbs.DeepTeach.com