仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1389|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网站制作之复杂的sql语句天生器

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:30:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。语句<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.sql.*,
java.util.*
"%>

<%!
publicStringchomp(Stringstr,Stringseparator){
if(str==null||str.length()==0||separator==null){
returnstr;
}
if(str.endsWith(separator)){
returnstr.substring(0,str.length()-separator.length());
}
returnstr;
}
%>

<%!
publicStringcapitalize(Stringstr){
intstrLen;
if(str==null||(strLen=str.length())==0){
returnstr;
}
returnnewStringBuffer(strLen)
.append(Character.toUpperCase(str.charAt(0)))
.append(str.substring(1))
.toString();
}


%>
<%
StringtableName=request.getParameter("t");
if(tableName==null||"".equals(tableName))
{
out.println("参数t");
return;
}
%>

<%
Connectionconn;
StringDBUser="sa";
StringDBPassword="sa";
StringDBServer="127.0.0.1";//Cantuselocalhost,youmustuseIPorCNAME
StringDBNAME="BcinetDB";//changetoyourdbname
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
//connecttothedatabase
conn=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://"+DBServer+":1433;DatabaseName="+DBNAME,DBUser,DBPassword);

Stringsql="select*from"+tableName;//changetoyourtablename

Statementstmt=conn.createStatement();
ResultSetrs=stmt.executeQuery(sql);
ResultSetMetaDatameta=rs.getMetaData();

//tableName=meta.getTableName(1);


intcount=meta.getColumnCount();
ArrayListAutoIncrementFields=newArrayList();
String[]ColumnNames=newString[count];
StringColumnClassNames[]=newString[count];

for(inti=0;i<count;i++)
{
if(meta.isAutoIncrement(i+1)){
AutoIncrementFields.add(newInteger(i));
}

ColumnNames[i]=meta.getColumnName(i+1);
ColumnClassNames[i]=meta.getColumnClassName(i+1);

}


rs.close();
stmt.close();
conn.close();//改成本人的数据库毗连开释


HashMapm=newHashMap();

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");

StringBufferselect=newStringBuffer("select");
StringBufferinsert1=newStringBuffer("insertinto");
insert1.append(tableName);
insert1.append("(");
StringBufferinsert2=newStringBuffer(")values(");
StringBufferupdate=newStringBuffer("update");
update.append(tableName);
update.append("set");

StringBufferinsertp1=newStringBuffer(insert1.toString());
StringBufferinsertp2=newStringBuffer(insert2.toString());
StringBufferupdatep=newStringBuffer(update.toString());

for(inti=0;i<count;i++)
{
select.append(ColumnNames[i]);
select.append(",");
if(!AutoIncrementFields.contains(newInteger(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=newStringBuffer(chomp(select.toString(),","));
select.append("from");
select.append(tableName);
select.append("");

insert1=newStringBuffer(chomp(insert1.toString(),","));
insert2=newStringBuffer(chomp(insert2.toString(),","));
insert2.append(")");
insert1.append(insert2);

update=newStringBuffer(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=newStringBuffer(chomp(insertp1.toString(),","));
insertp2=newStringBuffer(chomp(insertp2.toString(),","));
insertp2.append(")");
insertp1.append(insertp2);

updatep=newStringBuffer(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>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<body>
<p>表<%=tableName%>共
<%
out.print(count);
out.print("个字段");

Iteratoriterator=AutoIncrementFields.iterator();
intj=AutoIncrementFields.size();
while(iterator.hasNext())
{j--;
if(j==AutoIncrementFields.size()-1){
out.print("个中");
}
inti=((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(inti=0;i<count;i++)
{
out.print("private");
out.print(ColumnClassNames[i]);
out.print("");
out.print(ColumnNames[i]);
out.println(";<br>");
}
%>
<%
out.println("<br>");
for(inti=0;i<count;i++)
{
out.print("publicvoidset");
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(inti=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>
ParameterParserparser=newParameterParser(request);
<br/>
<%
for(inti=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(inti=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>
Connectionconn=ConnectionManager.getConnection();

PreparedStatementstmt=null;
StringBuffersql=newStringBuffer();
sql.append("<%out.print(insertp1);%>");
try{
stmt=conn.prepareStatement(sql.toString());
</pre>
<%
intjj=0;
for(inti=0;i<count;i++)
{
if(!AutoIncrementFields.contains(newInteger(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>
introws=stmt.executeUpdate();
}

}
catch(SQLExceptione){
throwe;
}

finally{
if(stmt!=null){
stmt.close();
}

if(conn!=null){
ConnectionManager.colse(conn);
}
}
</pre>
<hr>
<pre>
Connectionconn=ConnectionManager.getConnection();

PreparedStatementstmt=null;
StringBuffersql=newStringBuffer();
sql.append("<%out.print(updatep);%>");
try{
stmt=conn.prepareStatement(sql.toString());
</pre>
<%
intjjj=0;
for(inti=0;i<count;i++)
{
if(!AutoIncrementFields.contains(newInteger(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>
introws=stmt.executeUpdate();
}

}
catch(SQLExceptione){
throwe;
}

finally{
if(stmt!=null){
stmt.close();
}

if(conn!=null){
ConnectionManager.colse(conn);
}
}
</pre>
<hr>
<pre>
<tablewidth="90%"border="0"align="center"cellpadding="1"cellspacing="1">
<formname="form1"method="post"action="">
</pre>
<%
for(inti=0;i<count;i++)
{
if(!AutoIncrementFields.contains(newInteger(i))){
out.print("<tr>");
out.print("<td>");
out.print(ColumnNames[i]);
out.print("</td>");
out.print("<td>");
out.print("<inputtype="text"name="");
out.print(ColumnNames[i]);
out.print("">");
out.print("</td>");
out.print("</tr>");
out.println("<br>");
}
}
/*if(AutoIncrementFields.size()>0)
{
out.print("<inputtype="hidden"name="");
out.print(ColumnNames[((Integer)AutoIncrementFields.get(0)).intValue()]);
out.print("">");
}*/
%>
<pre>
</form>
</table>
</pre>
<hr>
<pre>
<tablewidth="90%"border="0"align="center"cellpadding="1"cellspacing="1">
<formname="form1"method="post"action="">
</pre>
<%
for(inti=0;i<count;i++)
{
if(!AutoIncrementFields.contains(newInteger(i))){
out.print("<tr>");
out.print("<td>");
out.print(ColumnNames[i]);
out.print("</td>");
out.print("<td>");
out.print("<inputtype="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("<inputtype="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>

其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-21 08:59:44 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
透明 该用户已被删除
板凳
发表于 2015-1-24 14:25:57 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
活着的死人 该用户已被删除
地板
发表于 2015-2-1 16:49:32 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
金色的骷髅 该用户已被删除
5#
发表于 2015-2-2 16:05:21 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
简单生活 该用户已被删除
6#
发表于 2015-2-3 12:46:01 来自手机 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
小女巫 该用户已被删除
7#
发表于 2015-2-4 20:35:57 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
深爱那片海 该用户已被删除
8#
发表于 2015-2-10 07:32:32 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
分手快乐 该用户已被删除
9#
发表于 2015-2-21 09:44:14 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
不帅 该用户已被删除
10#
发表于 2015-2-26 20:10:57 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-5 15:38:29 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
愤怒的大鸟 该用户已被删除
12#
发表于 2015-3-7 05:49:22 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
13#
发表于 2015-3-14 11:18:12 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
只想知道 该用户已被删除
14#
 楼主| 发表于 2015-3-19 04:10:16 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
山那边是海 该用户已被删除
15#
发表于 2015-3-19 04:22:00 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
小魔女 该用户已被删除
16#
发表于 2015-3-23 18:15:45 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
飘灵儿 该用户已被删除
17#
发表于 2015-3-25 00:20:18 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
因胸联盟 该用户已被删除
18#
发表于 2015-3-26 05:39:55 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
海妖 该用户已被删除
19#
发表于 2015-4-14 02:45:53 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
admin 该用户已被删除
20#
发表于 2015-4-14 16:44:03 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 12:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表