使用JDBC连接数据库

使用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();
		
	}

}


 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值