Java连接SQL2000时,只能连接到默认数据库吗?

时间:2022-10-09 05:51:57

class ConnSQL2K{
private Connection conn;

public ConnSQL2K(String ipAddr,String dbName,String user,String pwd){
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
System.out.println("数据库驱动加载成功!");

catch(ClassNotFoundException e){
e.printStackTrace();
}

String url = "jdbc:microsoft:sqlserver://" + ipAddr +":1433; DatabaseName=" + dbName ;
try{
conn = DriverManager.getConnection(url,user,pwd);
System.out.println("数据库连接成功!");
}
catch(SQLException e){
e.printStackTrace();
}
}

public Connection getConn(){
return conn;
}
}


如上代码,为什么我用sa用户连接时,不管指定那个数据库,它都连到master库?
只能连接到用户的默认数据库吗?
难道要为每个数据库分别指定不同的登录名???

20 个解决方案

#1


ding

#2


 不会的,可以连接任何数据库阿。
 是不是程序代码修改了没有保存呢,如果是eclipse右击--运行看看。

#3


引用楼主 WuBill 的帖子:
Java code
class ConnSQL2K{
    private Connection conn;

    public ConnSQL2K(String ipAddr,String dbName,String user,String pwd){
        try{
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            System.out.println("数据库驱动加载成功!");
        } 
        catch(ClassNotFoundException e){
            e.printStackTrace();
        }

        String …

对呀,每一个数据库都要有不同的用户和密码,驱动是唯一的,但是登陆名和密码要设定

#4


按理一个登录可以登录库里的所有数据库

#5


用你String user,String pwd程序中的参数直接取登录数据库,不就知道了
一般来讲,登录用户要授权.比如你指定的数据库

#6


我用的是sa 用户,只能查询master库,连pubs,Northwind中的数据都不能查
如果打开sql2000企业管理器把sa的默认数据库改为pubs,才能查询pubs库

#7


引用 5 楼 zhoushaolan 的回复:
用你String user,String pwd程序中的参数直接取登录数据库,不就知道了 
一般来讲,登录用户要授权.比如你指定的数据库

绝对没问题的
LZ再仔细检查一下

是不是你的dbname user 还有pwd传过去的有问题
可以在他们之前System.out.println();一下

#8


引用 7 楼 zhangpeixv 的回复:
 
绝对没问题的 
LZ再仔细检查一下 

是不是你的dbname user 还有pwd传过去的有问题 
可以在他们之前System.out.println();一下

请问参数有问题,还能连接成功吗?

#9


连库是没有问题的,就是查询不对

public static void main(String[] args){
                                        // 好象这里给的数据库名无效,总是到master库查找               
              // ConnSQL2K conn2K = new ConnSQL2K("localhost","pubs","sa","");
Connection conn = conn2K.getConn();

String strSQL;
strSQL = "select * from authors";
try {
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
System.out.println(strSQL);
ResultSet rs = stmt.executeQuery(strSQL);
rs.beforeFirst();
while(rs.next()) {
System.out.println(rs.getLong("au_id"));
System.out.println(rs.getString("au_lname"));
}
}
catch(Exception e) {
e.printStackTrace();
}

}

#10


String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";  
//mydb为数据库  

#11


引用 10 楼 thc1987 的回复:
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";  
//mydb为数据库  


你和我说的是一回事啊

#12


引用 8 楼 zhoushaolan 的回复:
引用 7 楼 zhangpeixv 的回复:


绝对没问题的 
LZ再仔细检查一下 

是不是你的dbname user 还有pwd传过去的有问题 
可以在他们之前System.out.println();一下 
 
请问参数有问题,还能连接成功吗?

呵呵有问题不代表不能连啊
就是怕连到别的地方去了

#13


不太知道,没遇到过,学习!

#14


  conn = DriverManager.getConnection(
     "jdbc:sqlserver://localhost:1433;DatabaseName=model"
连接这个数据库model

#15


弄了半天,都是答非所问啊
我用sa登录,我指定数据库为master时,能查询数据
指定到其他数据库时,连接成功,查表时出错,提示说,找不到表或字段,
当把我要查的表复制到master库时,不出错,或者打开sql企业管理器,更换sa的默认数据库也会消除错误
这是什么原因?

#16


没遇到过

#17


指定到其他数据库时,连接成功,就是找不到字段,打开sql企业管理器,更换sa的默认数据库也会消除错误,根据这几句话我推测不是你程序出的错,而是你的数据库端没给你用的数据库查询的权限.而master有这个权限。你试试改改数据库的权限!

#18


没遇到过这种情况,或许是你的sql2000有问题?
我用java连接过sql2000,并没有这种情况出现

#19


楼主的代码写的挺好的。检查不出错误,

#20


昨晚我也出现了同样的问题,纠结了好久啊!
刚才才发现是数据库连接字符串中多了个空格,也就是DatabaseName前多了个空格
String url = "jdbc:microsoft:sqlserver://" + ipAddr +":1433; DatabaseName=" + dbName ;
把空格去掉后就可以连接上自己的数据库了!
楼主也是同样的错误!同为天涯沦落人啊!

#1


ding

#2


 不会的,可以连接任何数据库阿。
 是不是程序代码修改了没有保存呢,如果是eclipse右击--运行看看。

#3


引用楼主 WuBill 的帖子:
Java code
class ConnSQL2K{
    private Connection conn;

    public ConnSQL2K(String ipAddr,String dbName,String user,String pwd){
        try{
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            System.out.println("数据库驱动加载成功!");
        } 
        catch(ClassNotFoundException e){
            e.printStackTrace();
        }

        String …

对呀,每一个数据库都要有不同的用户和密码,驱动是唯一的,但是登陆名和密码要设定

#4


按理一个登录可以登录库里的所有数据库

#5


用你String user,String pwd程序中的参数直接取登录数据库,不就知道了
一般来讲,登录用户要授权.比如你指定的数据库

#6


我用的是sa 用户,只能查询master库,连pubs,Northwind中的数据都不能查
如果打开sql2000企业管理器把sa的默认数据库改为pubs,才能查询pubs库

#7


引用 5 楼 zhoushaolan 的回复:
用你String user,String pwd程序中的参数直接取登录数据库,不就知道了 
一般来讲,登录用户要授权.比如你指定的数据库

绝对没问题的
LZ再仔细检查一下

是不是你的dbname user 还有pwd传过去的有问题
可以在他们之前System.out.println();一下

#8


引用 7 楼 zhangpeixv 的回复:
 
绝对没问题的 
LZ再仔细检查一下 

是不是你的dbname user 还有pwd传过去的有问题 
可以在他们之前System.out.println();一下

请问参数有问题,还能连接成功吗?

#9


连库是没有问题的,就是查询不对

public static void main(String[] args){
                                        // 好象这里给的数据库名无效,总是到master库查找               
              // ConnSQL2K conn2K = new ConnSQL2K("localhost","pubs","sa","");
Connection conn = conn2K.getConn();

String strSQL;
strSQL = "select * from authors";
try {
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
System.out.println(strSQL);
ResultSet rs = stmt.executeQuery(strSQL);
rs.beforeFirst();
while(rs.next()) {
System.out.println(rs.getLong("au_id"));
System.out.println(rs.getString("au_lname"));
}
}
catch(Exception e) {
e.printStackTrace();
}

}

#10


String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";  
//mydb为数据库  

#11


引用 10 楼 thc1987 的回复:
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";  
//mydb为数据库  


你和我说的是一回事啊

#12


引用 8 楼 zhoushaolan 的回复:
引用 7 楼 zhangpeixv 的回复:


绝对没问题的 
LZ再仔细检查一下 

是不是你的dbname user 还有pwd传过去的有问题 
可以在他们之前System.out.println();一下 
 
请问参数有问题,还能连接成功吗?

呵呵有问题不代表不能连啊
就是怕连到别的地方去了

#13


不太知道,没遇到过,学习!

#14


  conn = DriverManager.getConnection(
     "jdbc:sqlserver://localhost:1433;DatabaseName=model"
连接这个数据库model

#15


弄了半天,都是答非所问啊
我用sa登录,我指定数据库为master时,能查询数据
指定到其他数据库时,连接成功,查表时出错,提示说,找不到表或字段,
当把我要查的表复制到master库时,不出错,或者打开sql企业管理器,更换sa的默认数据库也会消除错误
这是什么原因?

#16


没遇到过

#17


指定到其他数据库时,连接成功,就是找不到字段,打开sql企业管理器,更换sa的默认数据库也会消除错误,根据这几句话我推测不是你程序出的错,而是你的数据库端没给你用的数据库查询的权限.而master有这个权限。你试试改改数据库的权限!

#18


没遇到过这种情况,或许是你的sql2000有问题?
我用java连接过sql2000,并没有这种情况出现

#19


楼主的代码写的挺好的。检查不出错误,

#20


昨晚我也出现了同样的问题,纠结了好久啊!
刚才才发现是数据库连接字符串中多了个空格,也就是DatabaseName前多了个空格
String url = "jdbc:microsoft:sqlserver://" + ipAddr +":1433; DatabaseName=" + dbName ;
把空格去掉后就可以连接上自己的数据库了!
楼主也是同样的错误!同为天涯沦落人啊!

#21