JSP连接SQLServer数据库

作者:梦想年华 日期:2006-09-25

我写的一个用jsp连接SQLServer数据库的代码。
要正确的使用这段代码,你需要首先在SQLServer数据库里创建一username表,表里面创建两个字符型的字段,字段名分别为:uid,pwd,然后插入几条测试数据。
欢迎各位提出改进的意见。
以下用两种方式来实现jsp连接SQLServer数据库。
第一种JSP形式。 
程序代码 程序代码
<meta http -equiv = "Content-Type" content = "text/html; charset=gb2312" >
< %@ page  contentType = "text/html; charset=gb2312"  language = "java" 
import = "java.sql.*" % >
< %  
     /*********************
     *********  JDBC_ODBC连接 SQL Server 数据库,不需要设置数据源
     *********  Date: 2005.8
     *********  Email:fanwsp@126.com
     *********  Author: DreamTime [梦想年华]
     *********  有任何欢迎提出指正   
     ****************************/



     //请根据需要,选择一种方法,去掉相应的方法的注释,并注释其它没有使用的
     //以下几项请自行修改
     String server = "localhost" ;         //SQL Server 服务器的地址
     String dbname = "test" ;             //SQL Server 数据库的名字
     String user = "sa" ;                 //SQL Server 数据库的登录用户名
     String pass = "chfanwsp" ;             //SQL Server 数据库的登录密码
     String port = "1433" ;                 //SQL Server 服务器的端口号,默认为1433
    

     /*****  方法1: *******
     *    用net.sourceforge.jtds.jdbc.Driver  
      *            (http://jtds.sourceforge.net/)                                 *
      *    在Win2003Server上安装SQLSERVER2000,必须安装补丁sp3                     *
     *************************/

     // *******数据库连接代码 开始  *******

         //数据库连接字符串 
         String  url = "jdbc:jtds:sqlserver://" +server + ":" +port + "/" +dbname + ";USER=" +user + ";PASSWORD=" +pass + "" ; 
         //加载驱动程序
        Class .forName ( "net.sourceforge.jtds.jdbc.Driver" ) .newInstance ( ) ; 
         //建立连接
        Connection conn = DriverManager .getConnection ( url ) ; 
         //创建语句对象
        Statement stmt =conn .createStatement (ResultSet .TYPE_SCROLL_SENSITIVE ,ResultSet .CONCUR_UPDATABLE ) ;
        
     // ****     数据库连接代码 结束 *********

        
     /**********          方法2:  *******
    *************    用微软提供的JDBC驱动程序   *******
    *******************************************
    *在Win2003 Server上安装SQLSERVER2000,必须安装补丁sp3
    ***************************/

     // ******************     数据库连接代码 开始             ******************
     /*
        String url="jdbc:microsoft:sqlserver://"+server+":"+port+";DatabaseName="+dbname+";
USER="+user+";PASSWORD="+pass+""; 
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
        Connection conn= DriverManager.getConnection(url); 
        Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    */

     // ****     数据库连接代码 结束 *********
    
    
     /**********          方法3:  ****************
    *************    用JDBC-ODBC桥驱动程序   *********
    ***********************************
    *    在Win2003 Server上安装SQLSERVER2000,可能需要安装补丁sp3*
    ***************************/

     // ********* 数据库连接代码 开始 ********
     /*
        String url="jdbc:odbc:Driver={SQL Server};server="+server+";uid="+user+";pwd="+pass+";database="+dbname+"";
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
        Connection conn= DriverManager.getConnection(url); 
        Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    */

     // ****     数据库连接代码 结束 *********
    
    
     String sql = "select * from username" ;
    ResultSet rs =stmt .executeQuery (sql ) ;
     //rs.first();
     while (rs .next ( ) ) {
    out . print ( "用户名:" ) ;
    out . print (rs .getString ( "uid" ) + " 密码:" ) ;
    out .println (rs .getString ( "pwd" ) + "<br>" ) ;
     }
    rs .close ( ) ;
    stmt .close ( ) ;
    conn .close ( ) ;
    
% >



第二种方式,用JavaBean来实现。请看代码:
DBConnSql.java
编译以后的Class文件应该放在 WEB-INF/classes/conn目录下。
程序代码 程序代码
[color=#008080]/*
 *******  java连接SQL Server数据库代码  *************
 *******          使用Jdbc连接          *************
 *
 *    作者:梦想年华
 *    Email:fanwsp@126.com
 *    HomePage:http://wsp.hniuca.net
 *     CopyRight(c)2005-2006 by DreamTime 
 *
*/


package conn ;                             //导入包
import java .sql . * ;                         //导入数据库操作的类

public class DBConnSql                     //构造方法,初始化
{

     private Connection conn ;             //连接对象
     private Statement stmt ;                 //语句对象
     private ResultSet rs ;                 //结果集对象
     private  String sqldriver ;             //SQL Server驱动程序字符串
     private  String sqlURL ;                  //SQL Server连接字符串
    
    

     /**********          方法1:  *********
     *        用net.sourceforge.jtds.jdbc.Driver   ************
      *        (http://jtds.sourceforge.net/)
      *        在Win2003Server上安装SQLSERVER2000,必须安装补丁sp3
      *
     *  该方法取得连接所需各种参数,组成连接字符串,然后再建立连接
     *  server;dbname,user,pass,port
                 * 分别表示SQL Server 服务器的地址,数据库,用户名,密码,端口
     *****************************/

     
      public Connection getConnToSql1 ( String server , String dbname , String user , String pass , String port ) {
          //SQL Server驱动程序,用net.sourceforge.jtds.jdbc.Driver
         sqldriver  =  "net.sourceforge.jtds.jdbc.Driver" ;    
        sqlURL  =  "jdbc:jtds:sqlserver://" ;               //连接字符串一部分
        try {
             //完整的连接字符串
            sqlURL  =sqlURL +server + ":" +port + "/" +dbname + ";USER=" +user + ";PASSWORD=" +pass + "" ; 
            Class .forName (sqldriver ) ;
            conn  = DriverManager .getConnection (sqlURL ) ;
             }catch (Exception e ) {
                 System .out .println ( "操作数据库出错,请仔细检查" ) ;
                 System .err .println (e .getMessage ( ) ) ;
             }
         return conn ;
     }
    
    
         /**********          方法2:  ***************
         ******* 用微软提供的JDBC驱动程序   **************
          *    在Win2003 Server上安装SQLSERVER2000,必须安装补丁sp3
          *
          *  该方法取得连接所需各种参数,组成连接字符串,然后再建立连接
        *  server;dbname,user,pass,port 
                      * 分别表示SQL Server 服务器的地址,数据库,用户名,密码,端口
        ********************************/

        
      public Connection getConnToSql2 ( String server , String dbname , String user , String pass , String port ) {
         
          //SQL Server驱动程序,用微软提供的JDBC驱动程序
         
         sqldriver  =  "com.microsoft.jdbc.sqlserver.SQLServerDriver" ;    
        sqlURL  =  "jdbc:microsoft:sqlserver://" ;           //连接字符串一部分
        try {
             //完整的连接字符串
            sqlURL  =sqlURL +server + ":" +port + ";DatabaseName=" +dbname + ";USER=" +user + ";PASSWORD=" +pass + "" ;
            Class .forName (sqldriver ) ;
            conn  = DriverManager .getConnection (sqlURL ) ;
             }catch (Exception e ) {
                 System .out .println ( "操作数据库出错,请仔细检查" ) ;
                 System .err .println (e .getMessage ( ) ) ;
             }
         return conn ;
     }
    
    
         /**********          方法3:  **************
         *************    用JDBC-ODBC桥驱动程序   **********
          *    在Win2003 Server上安装SQLSERVER2000,可能需要安装补丁sp3
          *
          * 该方法取得连接所需各种参数,组成连接字符串,然后再建立连接
        * server;dbname,user,pass,port 
                      * 分别表示SQL Server 服务器的地址,数据库,用户名,密码,端口
        **********************************************/

        
      public Connection getConnToSql3 ( String server , String dbname , String user , String pass , String port ) {
         
          //SQL Server驱动程序,用微软提供的JDBC驱动程序
         
         sqldriver  =  "sun.jdbc.odbc.JdbcOdbcDriver" ;    
        sqlURL  =  "jdbc:odbc:Driver={SQL Server};" ;           //连接字符串一部分
        try {
             //完整的连接字符串
            sqlURL  =sqlURL + "server=" +server + ";uid=" +user + ";pwd=" +pass + ";database=" +dbname + "" ;
            Class .forName (sqldriver ) ;
            conn  = DriverManager .getConnection (sqlURL ) ;
             }catch (Exception e ) {
                 System .out .println ( "操作数据库出错,请仔细检查" ) ;
                 System .err .println (e .getMessage ( ) ) ;
             }
         return conn ;
     }
    
    
    //关闭数据库连接
     public  void close ( )
     {
        try {
             //rs.close();
             //stmt.close();
            conn .close ( ) ;
         }catch (SQLException sqlexception ) {
            sqlexception .printStackTrace ( ) ;
         }
     }
}[/color]


这个文件只是实现了数据库的连接,下面我们再写一个测试文件。
就是用sql语句从数据库里查询出记录,以验证我们数据库的连接是否成功。
connsql.jsp 文件源代码如下:
程序代码 程序代码
[color=#0000ff]<meta http -equiv = "Content-Type" content = "text/html; charset=gb2312" >
< %@ page  contentType = "text/html; charset=gb2312"  language = "java"
 import = "java.sql.*"   % >
<jsp :useBean id = "DBConn" scope = "page" class = "conn.DBConnSql" / >
< % 
     /*****  说明:本数据库连接一共提供了三种方法:
      一、用net.sourceforge.jtds.jdbc.Driver,请调用getConnToSql1方法。
      二、用微软提供的JDBC驱动程序,请调用getConnToSql2方法。
      三、用JDBC-ODBC桥驱动程序连接,请调用getConnToSql3方法。
      
     本例使用的是第一种方法,调用getConnToSql1方法。请根据自己的实际情况进行修改
     如果是第二种方法请把 Connection conn=DBConn.getConnToSql1(server,dbname,user,pass);
                 里面语句改为:
     Connection conn=DBConn.getConnToSql2(server,dbname,user,pass);
                 其它类此。
    *****************************************************/

    
     //连接 SQL Server 数据库所需各种参数,请自行修改
     String server = "localhost" ;         //SQL Server 服务器的地址
     String dbname = "test" ;             //SQL Server 数据库的名字
     String user = "sa" ;                 //SQL Server 数据库的登录用户名
     String pass = "chfanwsp" ;             //SQL Server 数据库的登录密码
     String port  = "1433" ;             //SQL Server 服务器的端口号,默认为1433
    Connection conn =DBConn .getConnToSql3 (server ,dbname ,user ,pass ,port ) ;
    Statement stmt =conn .createStatement (ResultSet .TYPE_SCROLL_INSENSITIVE ,ResultSet .CONCUR_READ_ONLY ) ;
          String sql = "select * from username order by id" ;
     String sql1 = "insert into username (uid,pwd) values('wsp','wsp')" ;
     //stmt.executeUpdate(sql1);
    ResultSet rs =stmt .executeQuery (sql ) ;
     while (rs .next ( ) ) {
    out . print ( "用户名:" ) ;
    out . print (rs .getString ( "uid" ) + " 密码:" ) ;
    out .println (rs .getString ( "pwd" ) + "<br>" ) ;
     }
    rs .close ( ) ;
    stmt .close ( ) ;
    conn .close ( ) ;
     //DBConn.close();
% >

[/color]





 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值