JDBC总结

一、JDBC概述:

JDBC:Java Database Connectivity  是SUN公司提供的一套操作数据库的标准规范。

JDBC与数据库驱动的关系:接口与实现的关系。

二、JDBC规范

四个核心对象:

1.DriverManager:用于数据库驱动的注册

2.Connection:表示与数据库创建的连接

3.Statement:操作数据库SQL语句的对象

4.ResultSet:查询语句返回的结果集(相当于一张虚拟表)

三、四个核心对象的具体使用

3.1、DriverManager:驱动注册

方式一:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

方式一不推荐使用:查看源码可知:Driver类其实内部已经做了一次驱动注册,此种方法导致驱动被注册2次。而且强烈依赖数据库的驱动jar

源码:

public class Driver extends NonRegisteringDriver implements java.sql.Driver { 
    static {
        try {
            java.sql.DriverManager.registerDriver(new Driver());
        } catch (SQLException E) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}
方式二:推荐使用

	Class.forName("com.mysql.jdbc.Driver");

3.2、Connection:建立连接

方式一:

//getConnection(String url, String user, String password) 
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb1","root","123456");

方式二:

//getConnection(String url, Properties info)
Properties info = new Properties();
//因为put()方法传的参数类型是Object,而MySQL中要的是String类型,所以这里用setProperty()
info.setProperty("user", "root");
info.setProperty("password", "123456");
Connection conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb1", info);


方式三:

//getConnection(String url)
Connection conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb1?user=root&password=123456");

3.3、Statement与PreparedStatement:

使用Statement:

这种方法有SQL注入的危险

Statement stmt = conn.createStatement();

使用PreparedStatement:预编译对象, 是Statement对象的子类。

特点:

1.性能要高

2.会把sql语句先编译

3.sql语句中的参数会发生变化,过滤掉用户输入的关键字。


PreparedStatement  pstmt = conn.prepareStatement("SELECT * FROM user WHERE name=? AND password=?");
// 给?赋值
pstmt.setString(1, "zs");
pstmt.setString(2, "123456");

3.4、ResultSet:

ResultSet  rs = pstmt.executeQuery("SELECT * FROM user");
	while (rs.next()) {
		System.out.println(rs.getString("name"));
		System.out.println(rs.getString("password"));

	}

ResultSet可以使用索引取值,也可以使用字段名来取值,具体方法依情况使用。


四、使用完毕后记得释放资源

if (rs != null) {
	try {
		rs.close();
	} catch (SQLException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
	rs = null;
}
if (pstmt != null) {
	try {
		pstmt.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	pstmt = null;
}
if (conn != null) {
	try {
		conn.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	conn = null;
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值