站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题Java中JDBC数据库连接问题,应该不是jar包问题,也不应该是打补丁的问题,是否是SQL登录身份的问题...怎么解决呢?

Java中JDBC数据库连接问题,应该不是jar包问题,也不应该是打补丁的问题,是否是SQL登录身份的问题...怎么解决呢?

摘要: Java中JDBC数据库连接问题,应该不是jar包问题,也不应该是打补丁的问题,是否是SQL登录身份的问题...怎么解决呢?


我在教室里可以跑通的连数据库程序到了家里就不行了...报错如下:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing 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.(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at pageTest.db.DBFactory.connect(DBFactory.java:33)
at pageTest.db.DBFactory.main(DBFactory.java:95)

开始以为是我的SQL Server2000要打补丁(SP4),下了一个安装了以后还是不行...回头看我的安装盘写的是SQL Server2000 SP4...看来不是这个问题.
SQLServer查询分析器中输入:"select @@version",得到:"Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation
Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 2) ".

我是以Windows 身份登录的,SQL Server身份登录的话,输入username="sa",pwd=""报失败...是否是没安好啊...

//======================源代码如下==================================//
package pageTest.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class DBFactory {
private String driver;
private String url;
private String uid;
private String pwd;
private Connection conn;
private Statement stat;
private Statement stmt;
private ResultSet rs;
public DBFactory(){

}
public boolean connect() throws SQLException{
try{
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DataName=pubs";
driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
uid="sa";
pwd="";
Class.forName(driver);
/*sqlserver中创建"a"用户企业管理器下local下安全性登录右键“新建”
* (1.常规下创建创建"a"用户,选SQL Server身份验证=“”,指定数据库;
* 2.服务器角色下选第一个权限;
* 3.数据库访问下选要访问的数据库“pubs”--ok)*/
Connection conn=DriverManager.getConnection(url,uid,pwd);

stat=conn.createStatement();
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
} catch (ClassNotFoundException e) {
System.out.println("driver wrong Problem~");
e.printStackTrace();
return false;
} return true;
}
public void disconnect() throws SQLException{
try {
if(rs!=null)
rs.close();
if(stat!=null)
stat.close();
if(conn!=null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean executeSqlNoQuery(String sql){
try {
conn.setAutoCommit(false);
stat.execute(sql);
conn.commit();
return true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return false;
}
}
public ResultSet executeSqlwithStmtQuery(String sql){
try{
rs=stmt.executeQuery(sql);
}catch(SQLException e) {
e.printStackTrace();
}
return rs;
}
public ResultSet executeSqlWithQuery(String sql){
try{

rs=stat.executeQuery(sql);
}catch(SQLException e) {
e.printStackTrace();
}
return rs;
}
//=======Main for Test==========//
public static void main(String[] args){
DBFactory dbf=new DBFactory();
try {
dbf.connect();
ResultSet rs=dbf.executeSqlwithStmtQuery("sp_tables");
while(rs.next() ){
System.out.println(rs.getString(1));

}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
dbf.disconnect();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}

}
//============================================================//


没有升级到sp3


100%是这个问题


url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DataName=pubs";
driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
uid="sa";
pwd="";
Class.forName(driver);
如果MSSQL用sa不行这样做是不可能连接上的


地址:
http://www.microsoft.com/downloa ... p;DisplayLang=zh-cn
下载这个
chs_sql2ksp3.exe 56603 KB


你的sp4只是解压成功, 并没有安装到服务器上


SP3 SP4有区别吗??


刚刚去别的地方转了一圈,回答了别人的一个问题以后,回来一看我的问题还是没啥动静啊...伤心.
什么叫做"你的sp4只是解压成功, 并没有安装到服务器上"??

不懂 所以问得多,
请不要烦哦~


我又下了SP3,但是好象正如楼上所说"只是解压缩了,并没安装上",再试试...


sql server2000是必须要安装为sp3以上的版本 1433端口才会允许jdbc驱动连接的,如果没有升级为sp3以上版本 推荐你想办法升级一下.不过sql server和java的开发并不是一个好的组合方式,不管是在性能上还是在效率上,如果不是为了旧数据迁移问题,推荐用mysql或oracle之类的数据库.


我想我知道答案了:我光下了没安装...笨!
要运行 Setup.bat。再试...

通过此次问题,已经感到SQL Server 的确不太好用,打算换MySQL啦~
Oracle太大了...的确不错.


好了安装完毕,但是,
SQLServer查询分析器中输入:"select @@version",得到:
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 2)

怎么不是Pcak 3??
===================================
运行程序,新的错误产生了,啊~~~~~~倒!
===================================
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSLoginRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at pageTest.db.DBFactory.connect(DBFactory.java:33)
at pageTest.db.DBFactory.main(DBFactory.java:95)
==============================================================
似乎是我的SQL装的还是有问题...


我重新试了一下还是不行~>_<~
/*sqlserver中创建"qi"用户企业管理器下local下安全性登录右键“新建”
* (1.常规下创建创建"qi"用户,选SQL Server身份验证=“”,指定数据库pubs;
* 2.服务器角色下选第一个权限;
* 3.数据库访问下选要访问的数据库“pubs”--ok)*/
===============================================================
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DataName=pubs";
driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
uid="qi";
pwd="";
Class.forName(driver);
Connection conn=DriverManager.getConnection(url,uid,pwd);
================================================================
报错:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用户 'qi' 登录失败。原因: 未与信任 SQL Server 连接相关联。
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSLoginRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at pageTest.db.DBFactory.connect(DBFactory.java:33)
at pageTest.db.DBFactory.main(DBFactory.java:95)
================================================================
???




你用SU帐户登陆SQLServer可以不?


感觉好像是sql装的时候有问题


是不是不支持空密码啊,我用MYSQL是这样的


验证方式啊,你的验证方式是windows 用户 还是 sa的?

你用sa 连接看看


我上查询分析器,连接使用Windows身份验证;
用sa登录报错:
"服务器:消息 18452,级别 16,状态 1
[Microsoft][ODBC SQL Server Driver][SQL Server]用户 'sa'登录失败.原因:未与信任 SQL Server连接相关联."


我也有这个问题,一直没解决。不过我装的SQL个人版


远程连接不能为空


sqlserver如果用查询分析器都上不去的话,说明你的安装有问题,
当可以登陆上以后再达sp3包,我们用的xp sp2系统把不安全的0.0.0.0:1433端口给屏掉了,
所以要重新安装这个补丁,获得1433端口的监听,
都安装完毕后打开sqlserver,再在运行下输入->cmd->netstat -an
查看是否有0.0.0.0:1433 LISTENING
有的话说明打包成功,
然后看你的代码,抛出什么异常.


标准SP3错误,前天解决过


如果是xp sp2的版本建议先升级数据库的补丁,至于你文中说的用sa无法登陆成功说明sa不是你的sql server2000的合法用户,建议如下:
1.用你的系统用户名和密码作为连接数据库的用户名和密码,在打好补丁的基础上应该没有问题了
2.在sql server2000中添加用户sa,设置它的权限


上面没有说清楚,比如你的系统用户名是person ,密码是123,连接数据库采用如下方式:
将代码
uid="sa";
pwd="";
改为
uid="person";
pwd="123";



这两天感冒病毒来袭,(最近感冒的人好多...我就开始鼻子发痒...眼皮变重...>_<|| )

我再试试,谢谢大家的回复哦~
如果ok的话再告诉大家,3Q~


可不可以用sa连接的?



我现在在家先用桥连接解决中,
回头再研究一下,这个问题吧~


↑返回目录
前一篇: java swing程序如何退出
后一篇: 那位高手帮我看看是个什么问题?