大概了解了什么是JDBC后,接下来再具体了解一下几个经常使用API功能.后面就可使用这些API执行SQL语句html
JDBC-idea导入mysql链接java的jar包java
按照上面文章的步骤操做完成后,比较"硬核"的准备工做就OK了,接下来就来了解一下经常使用的APImysql
JDBC-java链接mysql(基于mysql8.0)sql
注册驱动语句可省略
java.sql.Driver
com.mysql.jdbc.Driver
com.mysql.cj.jdbc.Driver
加载注册驱动的方式 | 描述 |
---|---|
Class.forName(数据库驱动实现类) |
加载和注册数据库驱动 |
// 代码示例 public class JDBCTest01(){ public static void main(String[] args){ // 注册驱动(基于mysql8.0)(可省略) Class.forName("com.mysql.jdbc.Driver"); } }
Connection
接口代码一个链接对象.具体的实现类由数据库的厂商实现DriverManager
类的静态方式getConnection
能够得到数据库的链接得到链接的静态方法 | 说明 |
---|---|
Connection getConnection(String url, String user, String password) |
经过链接字符串, 用户名, 密码 来获取数据库链接对象 |
String url
: mysql URL的格式jdbc:mysql://localhost:3306/数据库名称?其他参数
String user
: 登陆数据库的用户名(通常是root)String password
: 登陆数据库的密码[注]
参考Java MySQL链接 | 菜鸟编程数据库
// 代码示例 public class SqlConnection { public static void main(String[] args) throws Exception{ // 1.注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); // 2.获取链接 url, 用户名, 密码 //"jdbc:mysql://localhost:3306/grasg?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; String DATABASE = "grasg"; String USER = "root"; String PASSWORD = "316426"; String url = "jdbc:mysql://localhost:3306/" + DATABASE + "?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; Connection con = DriverManager.getConnection(url,USER,PASSWORD); System.out.println(con); } } // 运行结果: com.mysql.cj.jdbc.ConnectionImpl@3c947bc5
经过Connection
的createStatement
方法,获取sql语句执行对象.(语句执行对象能够理解为"有权利执行sql的对象")编程
Connection接口中的方法 | 说明 |
---|---|
Statement createStatement() |
建立SQL语句执行对象 |
Statement
: 表明一条语句对象,用于发送SQL语句给服务器,而后执行静态SQL语句并返回它所生成的结果segmentfault
Statement类 经常使用方法 | 说明 |
---|---|
int executeUpdate(String sql) |
执行insert,update,delete语句.返回int类型,表明受影响的行数 |
ResultSet executeQuery(String sql) |
执行select语句,返回ResultSet结果集对象 |
// 代码示例 public class SqlCreateTable { public static void main(String[] args) throws Exception{ // 1. 注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 获取链接 String USER = "root"; String PASSWORD = "316426"; String DATABASE = "lianxi01"; String URL = "jdbc:mysql://localhost:3306/" + DATABASE + "?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; Connection conn = DriverManager.getConnection(URL, USER, PASSWORD); // 3. 获取语句执行平台 // 经过Connection的createStatement方法获取sql语句执行对象 Statement sqlState = conn.createStatement(); // 4. 建立表 String sql = "CREATE TABLE test_01(id int, name varchar(20),age int);"; int i = sqlState.executeUpdate(sql); System.out.println("获影响的行数为 = " + i); System.out.println("SQL语句执行成功!"); // 5.关闭流(后建立的先关闭) sqlState.close(); conn.close(); } }
只有在进行select查询操做时,才须要处理结果集
ResultSet接口方法 | 说明 |
---|---|
boolean next() |
游标向下一行; 返回boolean类型,若是还有下一条记录,返回true,不然返回false |
xxx getXxx(String or int) |
参数是String类型:表示经过<列名/字段名>获取数据; 参数是int类型:表示经过<列号/第几列>获取数据,从1开始 |
// 代码示例 public class SqlSelect { public static void main(String[] args){ Connection conn = null; Statement sqlExecute = null; ResultSet resultSet = null; try { // 1.注册驱动 - 能够省略 //Class.forName("com.mysql.cj.jdbc.Driver"); // 2.链接数据库并获取链接 String USER = "root"; String PASSWORD = "316426"; String DATABASE = "lianxi01"; String URL = "jdbc:mysql://localhost:3306/" + DATABASE + "?characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; conn = DriverManager.getConnection(URL,USER,PASSWORD); // 3.获取语句执行平台(Statement对象) sqlExecute = conn.createStatement(); // 4.执行select语句,返回的是一个ResultSet对象 String sql = "select * from test_01;"; resultSet = sqlExecute.executeQuery(sql); // 5.处理结果集 /*System.out.println(resultSet.next()); int id = resultSet.getInt("id"); System.out.println("id = " + id); String name = resultSet.getString("name"); System.out.println("name = " + name); int age = resultSet.getInt("age"); System.out.println("age = " + age);*/ int id; String name; int age; while(resultSet.next()){ id = resultSet.getInt("id"); name = resultSet.getString("name"); age = resultSet.getInt("age"); System.out.println("id = " + id + ", name = " + name + ", age = " + age); } } catch (SQLException throwables) { throwables.printStackTrace(); } finally { // 6.关闭流对象 try { resultSet.close(); sqlExecute.close(); conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } System.out.println("一切都关了!"); } }
ResultSet
结果集(只有在执行select查询操做时才出现结果集,才须要关闭), Statement
对象, Connection
对象Result => Statement => Connection
final
块中