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库?
只能连接到用户的默认数据库吗?
难道要为每个数据库分别指定不同的登录名???

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

    绝对没问题的
    LZ再仔细检查一下是不是你的dbname user 还有pwd传过去的有问题
    可以在他们之前System.out.println();一下
      

  5.   

    连库是没有问题的,就是查询不对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();
    } }
      

  6.   

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

  7.   

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

  8.   

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

  9.   

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

  10.   

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

  11.   

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