使用JDBC连接数据库无需像使用JDBC-ODBC桥连方式一样配置数据源,但是需要引入jar包(JDBC驱动包),我使用的是SQL-SERVER2008,驱动包不是传说中的三个jar包,只有一个。
SQL Server2008驱动包下载地址:http://download.csdn.net/detail/lissdy/4156067
加驱动包的方法:
1、单击项目→右键→属性,弹出如图对话框
2、选择Add External JARs,加入下载好的驱动包
有人说这样加入驱动包之后还需要将该驱动包放在jdk文件夹当中,我就顺便放进去了,不放行不行不太清楚。
具体放置路径为jdk\jre\lib\ext。如图,该目录下均为外部jar包:
加入驱动包之后人品各种不好,使用JDBC连接数据库时折腾了一下午,遇到了一堆问题
问题一:
java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
解决方法:
原因是我之前加载驱动程序的写法是照着书直接抄下来的,而SQL Server2008与SQL Server2000加载驱动程序写法不同:
SQL Server2000:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
SQL Server2008:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
问题二:
Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://127.0.0.1:1433:databaseName=Students
很奇怪,明明已经安装驱动却说没有找到合适的驱动。事实上这个问题跟问题一类似,都是SQL Server版本差异造成的
解决方法:
将之前的写法
ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433:databaseName=Students");
改为
ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Students");
问题三:
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: 用户 ' ' 登录失败。
解决方法:
之前使用ODBC-JDBC桥连接方式时登录数据库使用的是Windows身份验证,用户名密码可以为空,但是JDBC连接数据库时貌似不行,总是提示用户 ' ' 登录失败。于是将数据库登录方式更改为SQL Server身份验证。
更改步骤:
1、右键服务器→属性→安全性,如图更改服务器身份验证方式,点击确定。
2、展开安全性→登录名右键→新建登录名
3、建好新的登录名之后重启SQL Server。
在JAVA程序中使用新的登录名连接数据库
ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Students","sa","密码");
问题四:
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 'Studends' 无效。
解决方法:
仔细检查发现表名写错了,晕死。
问题全部解决之后数据库终于连接成功,得到了正确的查询结果。
使用JDBC连接数据库步骤:
1、把java.sql.*包引入
2、定义需要的对象
PreparedStatement ps=null; Connection ct=null; ResultSet rs=null;
3、加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
4、得到连接
ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Students","sa","密码");5、创建PreparedStatement
ps=ct.preparedStatement("select * from Students");6、执行
rs=ps.executeQuery();完整测试代码:
import java.sql.*; public class dbase { /** * @param args * 使用JDBC的方法连接数据库 * @throws SQLException */ public static void main(String[] args) throws SQLException { // TODO Auto-generated method stub PreparedStatement ps=null; Connection ct=null; ResultSet rs=null; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Students","sa","密码"); ps=ct.prepareStatement("select * from Students"); rs=ps.executeQuery(); //循环取出所查内容 while(rs.next()) { int id=rs.getInt(1); String g=rs.getString(2); System.out.println(id+" "+g); } ps.close(); rs.close(); } }