我在教室里可以跑通的连数据库程序到了家里就不行了...报错如下:
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.<init>(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();
}
}
}
}
//============================================================//
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.<init>(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();
}
}
}
}
//============================================================//
解决方案 »
- 求救:Java卸载时提示“安装时发生严重错误”
- 【初学】Hibernate配置基础问题。
- 欢迎Baidu和Google工作的兄弟们进去指点指点,我这种方法是否能够用于大型搜索?
- applet怎么让浏览器重新求情一个地址
- 【网路时代】批判夸大Web2.0的另一种婉转说词
- 请问JAVA在图形编程方面前景怎么样啊
- 我想在JFram上显示一个数组,并对这个数组进行排序,请高手帮我改一下我写的程序。
- 问个BoxLayout的问题
- sleep和yield()
- 在JB5里做了一个实体BEAN,SQLSERVER的驱动也已经填加到JB5的LIBRARIES里,做的过程中一切都正常,连接数据库都正常,但我用客户端测试的时候却出现以下问题,昨天发了一个求救,被管理员删了,希望今天别删了
- 请问一个关于hashtable的问题
- JAVA如何对某个特定的进程执行操作?
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
要运行 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)
================================================================
???
用sa登录报错:
"服务器:消息 18452,级别 16,状态 1
[Microsoft][ODBC SQL Server Driver][SQL Server]用户 'sa'登录失败.原因:未与信任 SQL Server连接相关联."
当可以登陆上以后再达sp3包,我们用的xp sp2系统把不安全的0.0.0.0:1433端口给屏掉了,
所以要重新安装这个补丁,获得1433端口的监听,
都安装完毕后打开sqlserver,再在运行下输入->cmd->netstat -an
查看是否有0.0.0.0:1433 LISTENING
有的话说明打包成功,
然后看你的代码,抛出什么异常.
1.用你的系统用户名和密码作为连接数据库的用户名和密码,在打好补丁的基础上应该没有问题了
2.在sql server2000中添加用户sa,设置它的权限
将代码
uid="sa";
pwd="";
改为
uid="person";
pwd="123";
如果ok的话再告诉大家,3Q~