日期:2014-05-19  浏览次数:20767 次

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

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

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

???????????????? 项目所达到的效果:在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和数 据库连接池等。个人认为用