JDBC总结
来源:互联网 发布:仓库数据流程图 编辑:程序博客网 时间:2024/06/08 00:16
一、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 blocke1.printStackTrace();}rs = null;}
if (pstmt != null) {try {pstmt.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}pstmt = null;}
if (conn != null) {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}conn = null;}
阅读全文
0 0
- JDBC总结
- JDBC总结
- JDBC总结
- JDBC总结
- JDBC总结
- jdbc总结
- jdbc总结
- JDBC总结
- JDBC总结
- JDBC总结
- JDBC总结
- JDBC总结
- jdbc总结
- JDBC总结
- JDBC总结
- jdbc总结
- jdbc总结
- jdbc总结
- Spring in Action 第二章
- STM32学习笔记之-串口中断接收不定数据buff
- RecyclerView使用完全指南
- next_permutation(排列问题)
- 数据仓库--数据建模(未完)
- JDBC总结
- IBM Ponder This November 2009【贪心】【哈夫曼树】
- jQuery自带的一些常用方法总结
- ZooKeeper 学习 (三) 客户端zkCli.sh以及相关操作命令
- 《编程之美》寻找发帖水王 质疑
- ORACLE学习之PL/SQL中异常
- 为解决的错误
- 总结JS中所有变量的类型和true/false
- C++单例模式