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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值