js|編程|後台 摘要:這篇文章主要針對有一定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)
{
}2、自動產生原來需要手寫的jsp代碼 <%
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>
<%
}
%>