题记: 这是我第一次写关于计算机专业技术的文章,这篇文章对我来说可是意义非凡啊,呵呵。它是一个记录点,一个我成长过程中的记录点。
正文:这几天我花了一些课余时间完成了这个小项目,主要实现数据库查询分析器的增删改查功能。页面比较简陋,没有做什么华丽的修饰。只是为了表达出我做这 个网页版数据库查询分析器的具体思路。由于水平有限,有些实现方式可能会略显粗糙,希望大家能提出更好的建议,互相交流学习。
项目所达到的效果:在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中配置了。这个思路的具体 实现方法我也在探索中,如果探索出来了会及时更新到本文中的。