zoukankan      html  css  js  c++  java
  • Java/JSP中使用JDBC连接SQL Server 2000/2005

    转自:http://hi.baidu.com/huangdonghui/blog/item/87cf4ff47ba653e37609d7e1.html/cmtid/9c82350965721ba22eddd4db

    1.

    准备工作


    首先,操作系统中安装好SQL Server 2000/2005,如果系统中都装有2000和2005版,记得停用一个,只开一个行了。

    然后,到微软网站下载Microsoft SQL Server 2005 JDBC Driver 1.1,也可以使用这个地址直接下载

    解压sqljdbc_1.1.1501.101_chs.exe,把sqljdbc_1.1复制到%ProgramFiles%(如果系统在C盘则为C:\Program Files)。

    设置 Classpath

    JDBC 驱动程序并未包含在 Java SDK 中。因此,如果要使用该驱动程序,必须将 classpath 设置为包含 sqljdbc.jar 文件。如果 classpath 缺少 sqljdbc.jar 项,应用程序将引发“找不到类”的常见异常。

    sqljdbc.jar 文件的安装位置如下:

    <安装目录>\sqljdbc_<版本>\<语言>\sqljdbc.jar

    下面是用于 Windows 应用程序的 CLASSPATH 语句实例:

    CLASSPATH =.;%ProgramFiles%\sqljdbc_1.1\chs\sqljdbc.jar

    下面是用于 Unix/Linux 应用程序的 CLASSPATH 语句实例:

    CLASSPATH =.:/home/usr1/mssqlserver2005jdbc/Driver/sqljdbc_1.1/chs/sqljdbc.jar

    注意: 在 Window 系统中,如果目录名长于 8.3 或文件夹名中包含空格,将导致 classpath 出现问题。如果怀疑存在这类问题,应暂时将 sqljdbc.jar 文件移动到名称简单的目录中,例如 C:\Temp,更改 classpath,然后测试这样是否解决了问题。

    直接在命令提示符运行的应用程序

    在操作系统中配置 classpath。将 sqljdbc.jar 追加到系统的 classpath 中。或者,使用 java -classpath选项,可以在运行此应用程序的 Java 命令行上指定 classpath。


    设置SQL Server服务器

    我使用的是SQL Server 2005标准版SP2,这些都默认即可,一般不用配置。如果需要配置端口请看下面。

    1、“开始”→“程序”→“Microsoft SQL Server 2005”→“配置工具”→“SQL Server 配置管理器”→“SQL Server 2005 网络配置”→“MSSQLSERVER 的协议”
    2、如果“TCP/IP”没有启用,右键单击选择“启动”。
    3、双击“TCP/IP”进入属性设置,在“IP 地址”里,可以配置“IPAll”中的“TCP 端口”,默认为1433。
    4、重新启动SQL Server或者重启计算机。


    创建数据库

    打开“SQL Server Management Studio”,登录连接SQL Server服务器,新建数据库,命名为test


    在Eclipse中测试

    1、打开Eclipse,“文件”→“新建”→“项目”→“Java 项目”,项目名为Test
    2、在Eclipse中,选择“窗口”→“首选项...”→“Java”→“已安装的 JRE”,选择已安装的 JRE,点击“编辑”→“添加外部”,选择%ProgramFiles%\sqljdbc_1.1\chs\sqljdbc.jar
    3、在Test项目的“JRE 系统库”中可以看见
    sqljdbc.jar,如果没有可以
    右键单击项目Test→“构建路径”→“配置构建路径...”→“Java 构建路径”→“库”→“添加外部 JAR...”,选择%ProgramFiles%\sqljdbc_1.1\chs\sqljdbc.jar
    4、
    编写Java代码,如下:

    import java.sql.*;

    public class Test {
    public static void main(String[] srg) {
       String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";   //加载JDBC驱动
       String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=test";   //连接服务器和数据库test
       String userName = "sa";   //默认用户名
       String userPwd = "123456";   //密码
       Connection dbConn;

       try {
       Class.forName(driverName);
       dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
       System.out.println("Connection Successful!");   //如果连接成功 控制台输出Connection Successful!
       } catch (Exception e) {
       e.printStackTrace();
       }
    }
    }


    注:

    1、因为SQL Express这个版本的服务器默认是禁用的并且端口号没有配置,所以要进行重新设置

    2、如果你以前用Java连接SQL Server 2000的话就要注意了:

    在SQL Server 2000 中加载驱动和URL路径的语句是

    String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";

    而SQL Server 2005 中加载驱动和URL的语句则为

    String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";

    如果写法错误将会找不到驱动。

    2.JSP连接SQL2000的时候出现问题,SP4补丁已经打过了,端口也开启了.出现如下问题:

    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'sf_testpaper' 无效。 at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)....

    解决方法:

    将DbConnection dbConnection=new DbConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=abc");

    改为:DbConnection dbConnection=new DbConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=abc");

    不知道莫名其妙的不认识localhost.弄了一天了......

    ——————————————————————————————————————————————————————

    PS:通过各种尝试和摸索,发现上面文章写的做法可以改进:

    环境:JDK1.6.0.30+TomCat6.0+MyEclipse8.5+sqljdbc_3.0.1301.101_chs

    做法:

    【Classpath不用再环境变量里配置;】

    【Eclipse中,选择“窗口”→“首选项...”→“Java”→“已安装的 JRE,这个也是不需要的;】

    关于JDBC文件,首先下载,然后解压把sqljdbc4.jar拷贝到WEB_INF/lib下,然后刷新一下项目即可。

    至于用sqljdbc4.jar与用sqljdbc.jar的区别,就是上文转载提到的“驱动URL路径”的区别。sqljdbc4.jar对应2005数据库写法,sqljdbc.jar的对应2000数据库的写法。但是sqljdbc4.jar不必须连接2005数据库,连接2000的也是可以的。

    另外最后需要注意的是,SQL2000必须打上SP4补丁。不然是无法连接成功的。

    参考DEMO代码:

    <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*,java.util.*" errorPage="" %>
    <%@page import="javax.servlet.jsp.tagext.TryCatchFinally"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>

    <body>
            <%
                Connection con;
                Statement sql;
                ResultSet rs;
                try
                {
                    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                    con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=pubs;","sa","sa");
                    sql = con.createStatement();
                    rs = sql.executeQuery("select * from jobs");
                    
                    rs.next();
                    out.println(rs.getString("job_desc"));
                    rs.close();
                    sql.close();
                    con.close();                
                }
                catch(SQLException ex)
                {
                    out.println(ex);
                }
            %>
    </body>
    </html>
  • 相关阅读:
    solr dataimport 数据导入源码分析(九)
    正确理解ThreadLocal
    solr dataimport 数据导入源码分析(六)
    solr dataimport 数据导入源码分析(七)
    solr dataimport 数据导入源码分析(八)
    solr dataimport 数据导入源码分析(一)
    solr dataimport 数据导入源码分析(五)
    OpenGL光照、键盘
    OpenGL着色
    OpenGL纹理映射
  • 原文地址:https://www.cnblogs.com/wangpei/p/2328672.html
Copyright © 2011-2022 走看看