<%@ page contenttype="text/html; charset=gb2312" %>
<%@ page import = "java.sql.*,
java.util.*
" %>
<%!
public string chomp(string str, string separator) {
if (str == null || str.length() == 0 || separator == null) {
return str;
}
if (str.endswith(separator)) {
return str.substring(0, str.length() – separator.length());
}
return str;
}
%>
<%!
public string capitalize(string str) {
int strlen;
if (str == null || (strlen = str.length()) == 0) {
return str;
}
return new stringbuffer(strlen)
.append(character.touppercase(str.charat(0)))
.append(str.substring(1))
.tostring();
}
%>
<%
string tablename=request.getparameter("t");
if (tablename==null||"".equals(tablename))
{
out.println("参数t");
return;
}
%>
<%
connection conn;
string dbuser="sa";
string dbpassword="sa";
string dbserver="127.0.0.1"; // cant use localhost , you must use ip or cname
string dbname="bcinetdb"; // change to your db name
class.forname("com.microsoft.jdbc.sqlserver.sqlserverdriver").newinstance();
//connect to the database
conn=java.sql.drivermanager.getconnection("jdbc:microsoft:sqlserver://"+dbserver+":1433;databasename="+dbname,dbuser,dbpassword);
string sql="select * from "+tablename;// change to your table name
statement stmt=conn.createstatement();
resultset rs=stmt.executequery(sql);
resultsetmetadata meta=rs.getmetadata();
// tablename=meta.gettablename(1);
int count=meta.getcolumncount();
arraylist autoincrementfields=new arraylist();
string[] columnnames=new string[count];
string columnclassnames[]=new string[count];
for (int i=0;i<count;i++)
{
if (meta.isautoincrement(i+1)){
autoincrementfields.add(new integer(i));
}
columnnames[i]=meta.getcolumnname(i+1);
columnclassnames[i] = meta.getcolumnclassname(i + 1);
}
rs.close();
stmt.close();
conn.close();//改成自己的数据库连接释放
hashmap m=new hashmap();
m.put("java.lang.boolean","boolean");
//m.put("java.lang.integer","integer");
m.put("java.lang.integer","int");
m.put("java.lang.long","long");
m.put("java.math.bigdecimal","bigdecimal");
m.put("jjava.lang.float","float");
m.put("java.lang.double","double");
m.put("java.lang.string","string");
m.put("java.sql.date","date");
m.put("java.sql.time","time");
m.put("java.sql.timestamp","timestamp");
m.put("java.lang.object","object");
stringbuffer select = new stringbuffer ("select ");
stringbuffer insert1 = new stringbuffer ("insert into ");
insert1.append(tablename);
insert1.append("(");
stringbuffer insert2 = new stringbuffer (" )values( ");
stringbuffer update = new stringbuffer (" update ");
update.append(tablename);
update.append(" set ");
stringbuffer insertp1 = new stringbuffer (insert1.tostring());
stringbuffer insertp2 = new stringbuffer (insert2.tostring());
stringbuffer updatep = new stringbuffer (update.tostring());
for (int i=0;i<count;i++)
{
select.append(columnnames[i]);
select.append(",");
if (!autoincrementfields.contains(new integer(i))){
insert1.append(columnnames[i]);
insert1.append(",");
insertp1.append(columnnames[i]);
insertp1.append(",");
insert2.append("\"+");
insert2.append(columnnames[i]);
insert2.append("+\"");
insert2.append(",");
insertp2.append("?");
insertp2.append(",");
update.append(columnnames[i]);
update.append(" = \"+");
update.append(columnnames[i]);
update.append("+\",");
updatep.append(columnnames[i]);
updatep.append(" = ");
updatep.append("?");
updatep.append(",");
}
}
select=new stringbuffer(chomp(select.tostring(),","));
select.append(" from ");
select.append(tablename);
select.append("");
insert1=new stringbuffer(chomp(insert1.tostring(),","));
insert2=new stringbuffer(chomp(insert2.tostring(),","));
insert2.append(")");
insert1.append(insert2);
update=new stringbuffer(chomp(update.tostring(),","));
update.append(" where ");
if (autoincrementfields.size()>0)
{
update.append(columnnames[((integer)autoincrementfields.get(0)).intvalue()]);
update.append(" = \"+");
update.append(columnnames[((integer)autoincrementfields.get(0)).intvalue()]);
update.append("+\"");
}
insertp1=new stringbuffer(chomp(insertp1.tostring(),","));
insertp2=new stringbuffer(chomp(insertp2.tostring(),","));
insertp2.append(")");
insertp1.append(insertp2);
updatep=new stringbuffer(chomp(updatep.tostring(),","));
updatep.append(" where ");
if (autoincrementfields.size()>0)
{
updatep.append(columnnames[((integer)autoincrementfields.get(0)).intvalue()]);
updatep.append(" = ");
updatep.append("?");
}
%>
<html>
<head>
<title>sql语句生成啦</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body>
<p>表 <%=tablename%> 共
<%
out.print(count);
out.print(" 个字段 ");
iterator iterator=autoincrementfields.iterator();
int j=autoincrementfields.size();
while(iterator.hasnext())
{j–;
if (j==autoincrementfields.size()-1){
out.print("其中 ");
}
int i=((integer)iterator.next()).intvalue();
out.print(columnnames[i]);
if (j!=0){
out.print(" , ");
}
else
{
out.print(" 是 autoincrement 类型不出现在sql语句中");
}
}
%>
<%
out.print("<br>");
out.println(select);
out.print("<br>");
out.print("<br>");
out.println(insert1);
out.print("<br>");
out.print("<br>");
out.println(update);
out.print("<br>");
out.print("<br>");
out.println(insertp1);
out.print("<br>");
out.print("<br>");
out.println(updatep);
%>
</p>
<hr>
<p>
<%
for (int i=0;i<count;i++)
{
out.print("private ");
out.print(columnclassnames[i]);
out.print(" ");
out.print(columnnames[i]);
out.println(";<br>");
}
%>
<%
out.println("<br>");
for (int i=0;i<count;i++)
{
out.print("public void set");
out.print(capitalize(columnnames[i]));
out.print("(" );
out.print(columnclassnames[i]);
out.print(" ");
out.print(columnnames[i]);
out.print("){");
out.println("<br>");
out.print("this.");
out.print(columnnames[i]);
out.print("=");
out.print(columnnames[i]);
out.print("; }");
out.println("<br>");
out.print("public ");
out.print(columnclassnames[i]);
out.print(" get");
out.print(capitalize(columnnames[i]));
out.print("() {");
out.println("<br>");
out.print("return ");
out.print(columnnames[i]);
out.println(";}<br>");
}
%>
</p>
<hr>
<p>
<%
for (int i=0;i<count;i++)
{
out.print(columnnames[i]);
out.print(" = ");
out.print(tablename);
out.print(".get");
out.print(capitalize(columnnames[i]));
out.println("();<br>");
}
%>
</p>
<hr>
<p>
parameterparser parser = new parameterparser(request);
<br />
<%
for (int i=0;i<count;i++)
{
out.print("string ");
out.print(columnnames[i]);
out.print(" = ");
out.print("parser.getstringparameter(\"");
out.print(columnnames[i]);
out.print("\",\"\");");
out.println("<br>");
}
%>
</p>
<hr>
<p>
<%
for (int i=0;i<count;i++)
{
out.print("string ");
out.print(columnnames[i]);
out.print(" = ");
out.print("request.getparameter(\"");
out.print(columnnames[i]);
out.print("\");");
out.println("<br>");
}
%>
</p>
<hr>
<pre>
connection conn = connectionmanager.getconnection();
preparedstatement stmt = null;
stringbuffer sql = new stringbuffer();
sql.append("<% out.print(insertp1); %>");
try {
stmt = conn.preparestatement(sql.tostring());
</pre>
<%
int jj=0;
for (int i=0;i<count;i++)
{
if (!autoincrementfields.contains(new integer(i))){
jj++;
out.print("stmt.set");
out.print(m.get(columnclassnames[i]));
out.print("(");
out.print(jj);
out.print(",");
out.print(columnnames[i]);
out.print(");<br>");
}}
%>
<pre>
int rows = stmt.executeupdate();
}
}
catch (sqlexception e) {
throw e;
}
finally {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
connectionmanager.colse(conn);
}
}
</pre>
<hr>
<pre>
connection conn = connectionmanager.getconnection();
preparedstatement stmt = null;
stringbuffer sql = new stringbuffer();
sql.append("<% out.print(updatep); %>");
try {
stmt = conn.preparestatement(sql.tostring());
</pre>
<%
int jjj=0;
for (int i=0;i<count;i++)
{
if (!autoincrementfields.contains(new integer(i))){
jjj++;
out.print("stmt.set");
out.print(m.get(columnclassnames[i]));
out.print("(");
out.print(jjj);
out.print(",");
out.print(columnnames[i]);
out.print(");<br>");
}}
if (autoincrementfields.size()>0)
{
jjj++;
out.print("stmt.set");
out.print(m.get(columnclassnames[((integer)autoincrementfields.get(0)).intvalue()]));
out.print("(");
out.print(jjj);
out.print(",");
out.print(columnnames[((integer)autoincrementfields.get(0)).intvalue()]);
out.print(");<br>");
}
%>
<pre>
int rows = stmt.executeupdate();
}
}
catch (sqlexception e) {
throw e;
}
finally {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
connectionmanager.colse(conn);
}
}
</pre>
<hr>
<pre>
<table width="90%" border="0" align="center" cellpadding="1" cellspacing="1">
<form name="form1" method="post" action="">
</pre>
<%
for (int i=0;i<count;i++)
{
if (!autoincrementfields.contains(new integer(i))){
out.print("<tr>");
out.print("<td>");
out.print(columnnames[i]);
out.print("</td>");
out.print("<td>");
out.print("<input type=\"text\" name=\"");
out.print(columnnames[i]);
out.print("\">");
out.print("</td>");
out.print("</tr>");
out.println("<br>");
}
}
/* if (autoincrementfields.size()>0)
{
out.print("<input type=\"hidden\" name=\"");
out.print(columnnames[((integer)autoincrementfields.get(0)).intvalue()]);
out.print("\">");
}*/
%>
<pre>
</form>
</table>
</pre>
<hr>
<pre>
<table width="90%" border="0" align="center" cellpadding="1" cellspacing="1">
<form name="form1" method="post" action="">
</pre>
<%
for (int i=0;i<count;i++)
{
if (!autoincrementfields.contains(new integer(i))){
out.print("<tr>");
out.print("<td>");
out.print(columnnames[i]);
out.print("</td>");
out.print("<td>");
out.print("<input type=\"text\" name=\"");
out.print(columnnames[i]);
out.print("\" value=\"<%=");
out.print(columnnames[i]);
out.print("%>\">");
out.print("</td>");
out.print("</tr>");
out.println("<br>");
}
}
if (autoincrementfields.size()>0)
{
out.print("<input type=\"hidden\" name=\"");
out.print(columnnames[((integer)autoincrementfields.get(0)).intvalue()]);
out.print("\" value=\"<%=");
out.print(columnnames[((integer)autoincrementfields.get(0)).intvalue()]);
out.print("%>\">");
}
%>
<pre>
</form>
</table>
</pre>
</body>
</html>
