手机站
网通分站
电信主站
密 码:
用户名:
热门关键字:  虚拟主机  cn域名  域名注册  非法  seo
当前位置 : 主页>程序设计>Java技术>列表

如何直接在浏览器内运行SQL命令

来源:互联网 作者:west263.com 时间:2008-02-23 点击:
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


  在这个例子中,Servlet利用一个MysQL数据库的驱动程序打开murach数据库的连接,数据库和Servlet运行在同一个服务器上。此外,Servlet使用MySQL的默认用户名字root,密码为空。不过,你可以修改这里的代码,只要有适当的驱动程序,就可以让Servlet连接到任何服务器上的任何数据库(有关MySQL数据库的更多信息,请参见www.mysql.com)。

  Servlet引擎关闭Servlet之前,调用destroy方法关闭数据库连接,释放连接资源:

public void destroy() {

    try{

        connection.close();

    }

    catch(SQLException e){

        System.out.println("不能关闭数据库连接: "   e.getMessage());

    }

}


  前面介绍的JSP页面要调用Servlet的doPost方法,doPost方法调用doGet方法:

public void doPost(HttpServletRequest request,

                   HttpServletResponse response)

                   throws IOException, ServletException{

     doGet(request, response);

 }


  在doGet方法之中,第一个语句首先获取用户在JSP页面中输入的SQL命令,第二个语句声明message变量:

public void doGet(HttpServletRequest request,

                   HttpServletResponse response)

                   throws IOException, ServletException{



     String sqlStatement = request.getParameter("sqlStatement");

     String message = "";


  然后,在try块之内,第一个语句利用Connection对象创建Statement对象,接下来的两个语句利用String对象的trim方法和substring方法返回用户输入的SQL命令的前六个字符。

try{

     Statement statement = connection.createStatement();

     sqlStatement = sqlStatement.trim();

     String sqlType = sqlStatement.substring(0, 6);


  如果SQL命令的前六个字符是“select”,则利用Statement的executeQuery方法执行SQL语句,获得一个ResultSet对象,把这个对象传递给SQLUtil类(稍后详细说明)的getHtmlRows方法,getHtmlRows方法将把记录集中的记录格式化成HTML表格并返回。

if  (sqlType.equalsIgnoreCase("select")){

     ResultSet resultSet = statement.executeQuery(sqlStatement);

     // 构造一个String,其中包含HTML表格形式的结果集数据

     message = SQLUtil.getHtmlRows(resultSet);

 }


  如果SQL语句的前六个字符不是“select”,则我们调用Statement对象的executeUpdate方法,executeUpdate方法返回当前操作影响的行数——如果这个数字是0,则该SQL命令是一个DDL命令,例如DROP TABLE或CREATE TABLE等;否则,则表明SQL命令可能是DML命令,如INSERT、UPDATE或DELETE命令。无论是哪一种SQL命令,我们都把message变量设置成相应的消息。

else

     {

         int i = statement.executeUpdate(sqlStatement);

         if (i == 0) // 这是一个DDL命令

           message =

             "<tr><td>"  

               "命令执行成功."  

             "</td></tr>";

         else // 这是一个INSERT、UPDATE或DELETE命令

             message =

               "<tr><td>"  

                 "SQL命令执行成功。<br>"  

                 "已更改"   i   " 行。"  

                "</td></tr>";

     }

     statement.close();

 }


  如果try块里面的任何一个语句抛出一个SQLException,catch块就设置message变量,使其包含有关该SQLException的信息。例如,如果在表单中输入的SQL命令语法错误,下面设置的message变量值将帮助你排解错误。

catch(SQLException e){

    message = "<tr><td>执行SQL命令时遇到错误:<br>"

              e.getMessage()   "</tr></td>";

}


  在catch块之后,接下来的三个语句获得session对象,把sqlStatement和message变量设置为session的属性:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

共3页: 上一页 [1] 2 [3] 下一页
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名
注册