当前位置: 技术问答>java相关
一个不用odbc 联sqlserver 2k的小问题,解决马上给分
来源: 互联网 发布时间:2015-10-12
本文导语: 我要连接,sqlserver 2k 下载驱动程序解压后,有三个文件,放在c:jdbc 下 c:jdbcmsbase.jar c:jdbcmssqlserver.jar c:jdbcmsutil.jar 并全部加到classpath 中, bean 主要代码如下: Class.forName("com.microsoft.jdbc.sqlserver.SQLSe...
我要连接,sqlserver 2k
下载驱动程序解压后,有三个文件,放在c:jdbc 下
c:jdbcmsbase.jar
c:jdbcmssqlserver.jar
c:jdbcmsutil.jar
并全部加到classpath 中,
bean 主要代码如下:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=abc","sa","123");
stmt = conn.createStatement();
编译通过,但执行查询的时候报错: No suitable driver
state:00001
code:0
怎么回事呀?
下载驱动程序解压后,有三个文件,放在c:jdbc 下
c:jdbcmsbase.jar
c:jdbcmssqlserver.jar
c:jdbcmsutil.jar
并全部加到classpath 中,
bean 主要代码如下:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=abc","sa","123");
stmt = conn.createStatement();
编译通过,但执行查询的时候报错: No suitable driver
state:00001
code:0
怎么回事呀?
|
将localhost换成ip试试看
从代码上看没有什么错误啊
贴一下你的classpath变量值,是不是这三个文件的绝对路径都在里面了?
顺便给你个成功的例子,对比看看
jdbc驱动设置(非jbuilder的运行环境下,比如cmd环境):
下载一个驱动,安装后将驱动文件(比如sqlserver是3个.jar文件)的绝对路径放入classpath环境变量里面去,最好将驱动就安装到jdk的lib目录里面算了。
这方面设置若有问题参考:http://www.csdn.net/expert/topic/750/750375.xml?temp=.4715387
可运行代码实例:
import java.sql.*;
public class Test {
public static void main(String[] args) {
try {
String address = "jdbc:microsoft:sqlserver://192.168.0.24:1433";
//驱动类型+目标数据库ip+数据库端口
String user="sa";//数据库用户密码
String passwd="";//口令
String database = "TESTDB";//目标数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//驱动申明
Connection con = DriverManager.getConnection(address,user,passwd);//建立链接
con.setCatalog(database);//确定目标数据库
Statement smt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//建立描述,设定结果集支持滚动光标且敏感,不可编辑
String selCode = "SELECT userId,userName FROM UserTable";//查询语句
ResultSet rs = smt.executeQuery(selCode);//结果集
if(rs.last()) {//从第一条往后依次取结果集中的记录
String userId = rs.getString(1);//等同rs.getString("userId"),即第一个字段数据
String userName = rs.getString(2);//同上,第二个字段,全部取其为String类型
//若是中文字段,一般需要转码
//userName = new String(userName.getBytes("ISO-8859-1"),"gb2312");
System.out.println(userId+":"+userName);//输出此条记录的查询结果
}
rs.close();//释放资源
smt.close();
con.close();
}
catch(Exception e) {
System.out.println(e);//捕捉异常
}
}
}
从代码上看没有什么错误啊
贴一下你的classpath变量值,是不是这三个文件的绝对路径都在里面了?
顺便给你个成功的例子,对比看看
jdbc驱动设置(非jbuilder的运行环境下,比如cmd环境):
下载一个驱动,安装后将驱动文件(比如sqlserver是3个.jar文件)的绝对路径放入classpath环境变量里面去,最好将驱动就安装到jdk的lib目录里面算了。
这方面设置若有问题参考:http://www.csdn.net/expert/topic/750/750375.xml?temp=.4715387
可运行代码实例:
import java.sql.*;
public class Test {
public static void main(String[] args) {
try {
String address = "jdbc:microsoft:sqlserver://192.168.0.24:1433";
//驱动类型+目标数据库ip+数据库端口
String user="sa";//数据库用户密码
String passwd="";//口令
String database = "TESTDB";//目标数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//驱动申明
Connection con = DriverManager.getConnection(address,user,passwd);//建立链接
con.setCatalog(database);//确定目标数据库
Statement smt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//建立描述,设定结果集支持滚动光标且敏感,不可编辑
String selCode = "SELECT userId,userName FROM UserTable";//查询语句
ResultSet rs = smt.executeQuery(selCode);//结果集
if(rs.last()) {//从第一条往后依次取结果集中的记录
String userId = rs.getString(1);//等同rs.getString("userId"),即第一个字段数据
String userName = rs.getString(2);//同上,第二个字段,全部取其为String类型
//若是中文字段,一般需要转码
//userName = new String(userName.getBytes("ISO-8859-1"),"gb2312");
System.out.println(userId+":"+userName);//输出此条记录的查询结果
}
rs.close();//释放资源
smt.close();
con.close();
}
catch(Exception e) {
System.out.println(e);//捕捉异常
}
}
}
|
在系统参数的path中加入,这三个文件所在的目录路径c:jdbc
|
你把这三个文件复制到jre/lib/ext目录下试试看
|
classpath加入上述三个文件路径。