您的位置:首页 > 编程语言 > Java开发

在java中用JDBC连接SQL Server 2000 的经验分享

2007-03-27 21:51 477 查看
这几天上到java的《JDBC基础知识》这章,讲了使用jdbc-odbc桥来实现jbuilder和sqlserver数据库的连接,基本没什么问题,但是碰到很多同学问如何采用sql server driver 来实现对sqlserver数据库的操作,所以把自己的经验以及在其他论坛上看的帖子总结了一下,具体步骤如下:

1、安装SQLServer2000
安装SQLServer2000补丁SP3
安装SQLServer2000 for SP3的驱动程序
(先打补丁sp3,再安装针对sp3的驱动程序,安装补丁时,为保险起见,两种验证方式的都装一遍,我是先装windows验证,再装SQL Server验证的)

打开JBuilder
2、tools_configure_libraries new一个sqlserver,在library paths中加入驱动程序安装目录下lib文件夹中的三个jar文件
3、project——default projectproperties在paths页下的required libaraes页中加入第1步new的sqlserver
4、tools——enterprise setup(jb9)
enterprise——enterprise setup(jb2005)
在弹出的对话框的database driver页中,添加第1步new的sqlserver,确定
5、重启jbuilder
6、tools——database pilot
在弹出的窗口的菜单中选view——option
在弹出的对话框中选driver页面,点add
在driver class文本框中输入com.microsoft.jdbc.sqlserver.SQLServerDriver,确定

7、设置名为com.microsoft.jdbc.sqlserver.SQLServerDriver的driver class
Driver是com.microsoft.jdbc.sqlserver.SQLServerDriver
URL是jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=数据库名(如:cardSystem)

常见问题分析-1:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establis
hing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source
)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)

at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Sou
rce)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown S
ource)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:523)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at DbTest.init(DbTest.java:32)
at DbTest.<init>(DbTest.java:25)
at DbTest.main(DbTest.java:46)
Press any key to continue...

出现上边错误的主要原因是默认的数据库服务器端口 1433没有打开,无法直接连接 ,如果成功升级到sp3则这个问题可以结决。还有就是数据库一定要用Windows和数据库混合身分验证方式。

常见问题分析-2:
在安装安装SQLServer2000 for SP3的驱动程序时,弹出对话框提示:"以前的某个程序安装已在安装计算机上创建挂起的文件操作"

原因:以前装过sql server,后来删掉。现在重装,却出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机”的错误。无法进行下去。

解决步骤是:
1)添加/删除程序中彻底删除sql server。
2)将没有删除的sql server目录也删除掉。
3)打开注册表编辑器,在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager中找到PendingFileRenameOperations项目,并删除它。这样就可以清除安装暂挂项目。
4)删除注册表中跟sql server相关的键。
其实估计只要做第3步就可以搞定,这样就可以清除安装暂挂项目。自己是先走了1,2,4,最后 做了3才搞定。所以估计3才是最关键的。

采用sql server driver 来实现对sqlserver数据库的操作时,一般代码如下:
Connection con = null;
PrepareStatement pstmt = null;
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con = DriverManager.getConnection("jdbc:microsoft:sqlserver//localhost:1433;databasename=pubs","sa","sa");
pstmt = con.preparedStatment("insert ....");
//......
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if (pstmt != null) pstmt.close();
if (con != null) con.close();
}catch(Exception e){
e.printStackTrace();
}
}

如果是SQLSERVER2005,则改成:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection("jdbc:sqlserver//localhost:1433;databasename=pubs","sa","sa");

> java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
估计是你连接sql server的端口设置有问题,你可以查看一下端口,看看是不是1433。

解决:出现[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket

凡是出现这种错误的,都可以说不是程序本身的错误,一般人都会写jdbc:microsoft:sqlserver://localhost:1433;这样写是对的,很多是由于端口的问题,请查看一下端口,如下:

1)打开"企业管理器",打开控制台根目录>SQL Server 组>数据库
2)在相应"数据库"上单击右键,选择"属性"
3)选择"常规"选项卡,点击"网络配置",如启用的协议中无"TCP/IP协议"将其加入
4)选择"TCP/IP协议",点击"属性",检查其端口号是否为1433
5)如端口号为1433将其修改为其它端口号,修改jdbc连接语句,将端口号同样改为新启用的端口号,如jdbc:microsoft:sqlserver://server_name:1400(假设新端口号为 1400)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: