J2EE--网页上的简易查询分析器_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > J2EE--网页上的简易查询分析器

J2EE--网页上的简易查询分析器

 2011/1/10 9:46:35  javasee  http://javasee.javaeye.com  我要评论(0)
  • 摘要:题记:这是我第一次写关于计算机专业技术的文章,这篇文章对我来说可是意义非凡啊,呵呵。它是一个记录点,一个我成长过程中的记录点。正文:这几天我花了一些课余时间完成了这个小项目,主要实现数据库查询分析器的增删改查功能。页面比较简陋,没有做什么华丽的修饰。只是为了表达出我做这个网页版数据库查询分析器的具体思路。由于水平有限,有些实现方式可能会略显粗糙,希望大家能提出更好的建议,互相交流学习。项目所达到的效果:在JSP页面中的文本域(页面被一条标尺线分为两半,文本域在上半部分
  • 标签:分析 网页

题记: 这是我第一次写关于计算机专业技术的文章,这篇文章对我来说可是意义非凡啊,呵呵。它是一个记录点,一个我成长过程中的记录点。

?????? 正文:这几天我花了一些课余时间完成了这个小项目,主要实现数据库查询分析器的增删改查功能。页面比较简陋,没有做什么华丽的修饰。只是为了表达出我做这 个网页版数据库查询分析器的具体思路。由于水平有限,有些实现方式可能会略显粗糙,希望大家能提出更好的建议,互相交流学习。

???????????????? 项目所达到的效果:在JSP页面中的文本域(页面被一条标尺线分为两半,文本域在上半部分)中输入SQL的增删改查语句,点击提交按钮,页面的下半部分则会输出数据。

????????????????? 项目的主要实现步骤如下:

????????????????? 1.? 在MyEclipse开发环境中导入数据库驱动(我使用的数据库是SQL Server 2005 ,驱动可在微软官网中下载。),具体操作:在项目名下点鼠标右键——》选择Build Path— —》点击add extenal archives— —》找到你放驱动的位置,双击即可。

???????????????? 2. 在项目的WEB-ROOT文件夹下创建一个名为:Th.jsp的JSP文件。该JSP页面的代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
? <head>
????????? <script. language="javascript">?????? <!-- 这个javascript函数是用来接收页面文本域的值的。-->

???????????? function getForms(){

???????????? document.forms.submit();

???????????? }
???????? </script>
? </head>
?
? <body>? <form. name="forms" method="post">
??????????? <center>
??????????? <p>请输入SQL语句:</p> <p><textarea rows="5" cols="45" name="textarea" ></textarea></p>
??????????? <input type="submit" name="submit" value="提交" nclick="getForms()"/>
??????????? </center>
??????? </form><hr/>
?????????
?????????
????????? <%?????Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();??//导入数据库驱动
?????????????? String url = "jdbc:sqlserver://localhost:1433;DatabaseName=studentinfo";
????????????
???????????? ?String name = "XXX";?? //name和psw变量是用于存放数据库的用户名和密码的,本文中就用XXX代替
????????????? String psw = "XXX";
????????? ? ?Connection conn = DriverManager.getConnection(url, name, psw);????????? //获取一个数据库连接
????????? ????PreparedStatement pstate = null;?????????? //声明一个用于执行SQL语句的PreparedStatement类型的对象

??????????? ?ResultSet? rs = null ;??????????? ?//用于存放查询数据的结果集
????????????
????
??????????? String sql = request.getParameter("textarea");??//获取文本域中输入的值
????????????
??????????? int count = 0 ;??????//count变量是用来计算修改记录的次数的。
????????????
??????????? if(sql!=null)???????????
?????????? {??
??????????????? String s =? sql.substring(0,6).toLowerCase();???????????????????? //获取sql的前6个字符串,并将它们转化为小写
??????????????? if(s.equals("update")||s.equals("insert")||s.equals("delete"))??
??????????????? {??? pstate = conn.prepareStatement(sql) ;?????????????????????????? ?//执行SQL语句
???????????????????? count = pstate.executeUpdate();
???????????????????? System.out.println("记录修改成功,共修改了 "+count+" 次!");?
??????????????? }
???????????????
???????? if(s.toLowerCase().equals("select")){
?????????? pstate = conn.prepareStatement(sql);
?????????? rs = pstate.executeQuery();?????//将查询到的数据存放在rs结果集中。?
???????????????????
??????while(rs.next()){
?????? %>???????? //对查询到的数据进行输出,不过,值得注意的是数据库中的每一张表的结构不可能都相同,所以输出的类??? 型也会不同。本文的后面会提到一个解决思路。

???? <center><p><%=rs.getString(1)%>--?????????????????????????????????????????????????

?????????????????????????? ?<%=rs.getString(2)%>--?????????????????????????????????????

?????????????????????????? <%=rs.getString(3)%>--?????
???????????? ???????????? ?<%=rs.getString(4)%>--?????
?????????????????????? ?? <%=rs.getString(5)%> </p></center>
??? <%???
?????????? ?}
?????????????? rs.close();
?????? ?? }?????? ??????????????
??????????? pstate.close();
??????????? conn.close();
????}??
??%>
?????????????????
? </body>
</html>

??? ? 小结:这个小项目本人测试已成功。本文有些细节需要提一下,该项目中连接数据库的方式是使用JDBC接口,其他连接数据库的方式还有JSP+bean和数 据库连接池等。个人认为用数据库连接池技术连接数据库更为方便,高效。不过,对于刚接触连接数据库的人来说,这个技术不易于理解,所以最好是先接触 JDBC或JSP+bean。另外,我使用的执行SQL语句的对象是PreparedStatement 类型的,而不是Statement 类型,PreparedStatement虽然是Statement 的子接口,但是PreparedStatement相比之下更为安全和高效。(具体原因可上网查阅相关资料。)最后,再提一下关于解决查询到的数据输出到 页面问题的思路(这个思路其实是从老师那里问来的,嘿嘿。):输出时不用getString(),getInt()等获取数据类型的方法,而是直接获取表 的列名即getColumnName()方法,但是又衍生出一个问题-------每张表的列名也不会都相同,这就需要在XML中配置了。这个思路的具体 实现方法我也在探索中,如果探索出来了会及时更新到本文中的。

发表评论
用户名: 匿名