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右击--运行看看。
是不是程序代码修改了没有保存呢,如果是eclipse右击--运行看看。
#3
对呀,每一个数据库都要有不同的用户和密码,驱动是唯一的,但是登陆名和密码要设定
#4
按理一个登录可以登录库里的所有数据库
#5
用你String user,String pwd程序中的参数直接取登录数据库,不就知道了
一般来讲,登录用户要授权.比如你指定的数据库
一般来讲,登录用户要授权.比如你指定的数据库
#6
我用的是sa 用户,只能查询master库,连pubs,Northwind中的数据都不能查
如果打开sql2000企业管理器把sa的默认数据库改为pubs,才能查询pubs库
如果打开sql2000企业管理器把sa的默认数据库改为pubs,才能查询pubs库
#7
绝对没问题的
LZ再仔细检查一下
是不是你的dbname user 还有pwd传过去的有问题
可以在他们之前System.out.println();一下
#8
请问参数有问题,还能连接成功吗?
#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为数据库
//mydb为数据库
#11
你和我说的是一回事啊
#12
呵呵有问题不代表不能连啊
就是怕连到别的地方去了
#13
不太知道,没遇到过,学习!
#14
conn = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;DatabaseName=model"
连接这个数据库model
"jdbc:sqlserver://localhost:1433;DatabaseName=model"
连接这个数据库model
#15
弄了半天,都是答非所问啊
我用sa登录,我指定数据库为master时,能查询数据
指定到其他数据库时,连接成功,查表时出错,提示说,找不到表或字段,
当把我要查的表复制到master库时,不出错,或者打开sql企业管理器,更换sa的默认数据库也会消除错误
这是什么原因?
我用sa登录,我指定数据库为master时,能查询数据
指定到其他数据库时,连接成功,查表时出错,提示说,找不到表或字段,
当把我要查的表复制到master库时,不出错,或者打开sql企业管理器,更换sa的默认数据库也会消除错误
这是什么原因?
#16
没遇到过
#17
指定到其他数据库时,连接成功,就是找不到字段,打开sql企业管理器,更换sa的默认数据库也会消除错误,根据这几句话我推测不是你程序出的错,而是你的数据库端没给你用的数据库查询的权限.而master有这个权限。你试试改改数据库的权限!
#18
没遇到过这种情况,或许是你的sql2000有问题?
我用java连接过sql2000,并没有这种情况出现
我用java连接过sql2000,并没有这种情况出现
#19
楼主的代码写的挺好的。检查不出错误,
#20
昨晚我也出现了同样的问题,纠结了好久啊!
刚才才发现是数据库连接字符串中多了个空格,也就是DatabaseName前多了个空格
String url = "jdbc:microsoft:sqlserver://" + ipAddr +":1433; DatabaseName=" + dbName ;
把空格去掉后就可以连接上自己的数据库了!
楼主也是同样的错误!同为天涯沦落人啊!
刚才才发现是数据库连接字符串中多了个空格,也就是DatabaseName前多了个空格
String url = "jdbc:microsoft:sqlserver://" + ipAddr +":1433; DatabaseName=" + dbName ;
把空格去掉后就可以连接上自己的数据库了!
楼主也是同样的错误!同为天涯沦落人啊!
#21
#1
ding
#2
不会的,可以连接任何数据库阿。
是不是程序代码修改了没有保存呢,如果是eclipse右击--运行看看。
是不是程序代码修改了没有保存呢,如果是eclipse右击--运行看看。
#3
对呀,每一个数据库都要有不同的用户和密码,驱动是唯一的,但是登陆名和密码要设定
#4
按理一个登录可以登录库里的所有数据库
#5
用你String user,String pwd程序中的参数直接取登录数据库,不就知道了
一般来讲,登录用户要授权.比如你指定的数据库
一般来讲,登录用户要授权.比如你指定的数据库
#6
我用的是sa 用户,只能查询master库,连pubs,Northwind中的数据都不能查
如果打开sql2000企业管理器把sa的默认数据库改为pubs,才能查询pubs库
如果打开sql2000企业管理器把sa的默认数据库改为pubs,才能查询pubs库
#7
绝对没问题的
LZ再仔细检查一下
是不是你的dbname user 还有pwd传过去的有问题
可以在他们之前System.out.println();一下
#8
请问参数有问题,还能连接成功吗?
#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为数据库
//mydb为数据库
#11
你和我说的是一回事啊
#12
呵呵有问题不代表不能连啊
就是怕连到别的地方去了
#13
不太知道,没遇到过,学习!
#14
conn = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;DatabaseName=model"
连接这个数据库model
"jdbc:sqlserver://localhost:1433;DatabaseName=model"
连接这个数据库model
#15
弄了半天,都是答非所问啊
我用sa登录,我指定数据库为master时,能查询数据
指定到其他数据库时,连接成功,查表时出错,提示说,找不到表或字段,
当把我要查的表复制到master库时,不出错,或者打开sql企业管理器,更换sa的默认数据库也会消除错误
这是什么原因?
我用sa登录,我指定数据库为master时,能查询数据
指定到其他数据库时,连接成功,查表时出错,提示说,找不到表或字段,
当把我要查的表复制到master库时,不出错,或者打开sql企业管理器,更换sa的默认数据库也会消除错误
这是什么原因?
#16
没遇到过
#17
指定到其他数据库时,连接成功,就是找不到字段,打开sql企业管理器,更换sa的默认数据库也会消除错误,根据这几句话我推测不是你程序出的错,而是你的数据库端没给你用的数据库查询的权限.而master有这个权限。你试试改改数据库的权限!
#18
没遇到过这种情况,或许是你的sql2000有问题?
我用java连接过sql2000,并没有这种情况出现
我用java连接过sql2000,并没有这种情况出现
#19
楼主的代码写的挺好的。检查不出错误,
#20
昨晚我也出现了同样的问题,纠结了好久啊!
刚才才发现是数据库连接字符串中多了个空格,也就是DatabaseName前多了个空格
String url = "jdbc:microsoft:sqlserver://" + ipAddr +":1433; DatabaseName=" + dbName ;
把空格去掉后就可以连接上自己的数据库了!
楼主也是同样的错误!同为天涯沦落人啊!
刚才才发现是数据库连接字符串中多了个空格,也就是DatabaseName前多了个空格
String url = "jdbc:microsoft:sqlserver://" + ipAddr +":1433; DatabaseName=" + dbName ;
把空格去掉后就可以连接上自己的数据库了!
楼主也是同样的错误!同为天涯沦落人啊!