一、基础概念
1.JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成
2.简单地说,JDBC 可做三件事:与数据库建立连接、发送操作数据库的语句并处理结果
3.Java数据库连接,提供了一种与平台无关的用于执行SQL语句的标准javaAPI,可以方便实现多种关系型数据库的统一操作
二、JDBC 执行流程
1.连接数据源,如:数据库
2.为数据库传递查询和更新指令
3.处理数据库响应并返回的结果
三、JDBC 编程步骤
1. 加载驱动程序,需要引入myqsl-connector的jar包
Class.forName(driverClass)
1)加载MySql驱动 Class.forName("com.mysql.jdbc.Driver")
2)加载Oracle驱动 Class.forName("oracle.jdbc.driver.OracleDriver")
2. 获得数据库连接
1)声明数据库url,user,password
public static final String URL = "jdbc:mysql://localhost:3306/imooc";
public static final String USER = "root";
public static final String PASSWORD = "";
2) 获得数据库连接
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
3) 操作数据库,实现增删改查
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT user_name, age FROM imooc_goddess");
4)关闭各种资源
pstmt.close();
conn.close();
四、代码示例
1. 前期准备
1) 已装好一个数据库(比如mysql)
2) 新建maven项目
3) maven中央仓库(http://mvnrepository.com/)搜索 “MySQL Connector”,加载驱动程序,需要引入myqsl-connector的jar包
4) 将如下依赖写到自己的pom.xml文件中,maven更新
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
2. 最简化示例代码
public class JDBCTest {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 加载mysql驱动
Class.forName("com.mysql.jdbc.Driver");
// 获得数据库连接(数据库url, 账号, 密码)
Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/hh", "root", "");
// sql语句
String sql = "select * from user";
// 把创建的SQL对象,转而存储到数据库当中,如果是有占位符的sql,用 PreparedStatement对象
Statement stmt = conn.createStatement();
// 执行sql,获得结果集
ResultSet rs = stmt.executeQuery(sql);
// 如果有数据,rs.next()返回true
while(rs.next()){
System.out.println("姓名:" + rs.getString("name")+" 城市:"+rs.getString("city"));
}
// 依次关闭流
stmt.close();
conn.close();
}
}
五、JDBC常用方法
1.加载驱动
Class.forName("com.mysql.jdbc.Driver")
2.获得数据库连接
Connection conn = DriverManager.getConnection(url, user, password)
3.操作数据库,实现增删改查
1) Statement Statement st = conn.createStatement();
2) PrepareStatement PreparedStatement ptmt = conn.prepareStatement(sql);
3) Statement与PrepareStatement:
(1)PreparedStatement可以写动态参数化的查询,先 String sql = "里面有占位符 ?",采用参数占位符,对于数据库来说是预编译再填充参数
(2)PreparedStatement 的 SQL 对于数据库来说采用预编译,数据库会将其进行缓存,下一次可以直接拿来使用,省掉了解析 SQL 语句、编译 SQL 的时间
(3)PreparedStatement 是 Statement 子接口,因此 Statement 有的功能 PreparedStatement 都有,而 Statement 没有的功能 PreparedStatement 也有
4)execute有关方法
(1) ResultSet execute(String sql);
执行select语句,返回的是查询后得到的记录集(ResultSet)
(2) boolean executeUpdate(String sql);
执行任何sql语句(select,insert,update,delete),返回值是第一个结果的表现形式。
当第一个执行结果是查询语句是,返回true,可以通过getResultSet()方法获取结果;
当第一个执行结果是更新语句或DDL语句时,返回false,可以通过getUpdateCount()获取更新的记录条数
(3)int executeUpdate(String sql)
执行update, insert, delete语句,返回的是执行后收到影响的记录数(int)
对于create table或者drop table等不操作行的DDL语句,返回值总为0
(4)Statement调用都需要传入sql,PrepareStatement调用不用传入sql,因为conn的get时候已经传入了预编译的sql
5) ResultSet中的方法
(1)boolean resultSet.next() 放入循环里面,表示是否有下一个对象,是否还有对象
(2)String s = resultSet.getString(columnIndex) 获取某个字段的值,各种基本数据类型的方法不一样,但是都大同小异
6)PrepareStatement特有方法
1)void ptmt.setString(parameterIndex, x); 第一参数占位符的位置,第二个参数要填值,各种基本数据类型的方法不一样,但是都大同小异
参考网址
注:文章是经过参考其他的文章然后自己整理出来的,有可能是小部分参考,也有可能是大部分参考,但绝对不是直接转载,觉得侵权了我会删,我只是把这个用于自己的笔记,顺便整理下知识的同时,能帮到一部分人。
ps : 有错误的还望各位大佬指正,小弟不胜感激