JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。以下整理了JDBC连接MySQL数据库的常用步骤。

环境:Windows 7
工具:
MyEclipse 2017
mysql-connector-java-5.1.6.jar

一. JDBC编程步骤

1.导包
在工程目录中创建lib文件夹,将下载好的JDBC放到该文件夹中,右键点击选择Bulid path,然后选择 Add to build path

2.加载(注册)驱动
Class.forName(“com.mysql.jdbc.Driver”);

3.获取数据库连接
String url=”jdbc:mysql://hostname:3306/databasename”
Connection con = DriverManager.getConnection(url,user,password)

4.通过Connection对象创建Statement对象

  • CreateStatement():创建基本的statement对象
  • PrepareStatement(String sql):根据传入的sql语句创建预编译的Statement对象
  • prepareCall(String sql):根据传入的sql语句创建CallableStatement对象

推荐使用PreparedStatement创建
PreparedStatement ps = con.PrepareStatement(String sql);

5.使用Statement执行SQL语句

  • execute():可以执行任何SQL语句,但比较麻烦
  • executeUpdate():主要用于执行DML和DDL语句。执行DML语句返回受影响的行数,执行DDL语句返回0
  • executeQuery():只能执行查询语句,执行后返回代表查询结果的ResultSet对象

ps.executeUpdate();
ps.executeQuery();

6.操作结果集

  • next()、previous()、first()、last()等移动记录指针的办法
  • getXxx()方法获取记录指针指向行、特定列的值

7.回收数据库资源
关闭ResultSet、Statement和Connection等资源

二. 连接数据库并读取数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.lousen.test_10;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SqlTest {
public static void main(String[] args){
try {
//1.加载MySQL驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取数据库连接
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false","lousen", "1135497143");
if(!con.isClosed()){
System.out.println("成功连接到MySQL数据库!");
}
//3.创建statement类对象,用于执行SQL语句
Statement state = con.createStatement();
String sql = "select * from employee"; //要执行的sql语句
//4.ResultSet类,用来存放获取的结果集
ResultSet rs = state.executeQuery(sql);
while(rs.next()){
String name = rs.getString("name"); //获取name这列数值
System.out.println(name);
}
rs.close();
con.close();
} catch (ClassNotFoundException e) {
//数据库驱动异常处理
e.printStackTrace();
} catch (SQLException e) {
// 数据库连接异常处理
e.printStackTrace();
}
}
}

三. DML语句操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.lousen.test_10;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.sql.SQLException;
public class SqlTest_3 {
public static void main(String[] args) throws ParseException{
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
String user = "lousen";
String pwd = "1135497143";
Connection con = DriverManager.getConnection(url,user,pwd);
String sql = "insert into employee values(?,?,?,?,?,?)"; //增
//String sql = "update employee set name = ? ,posit_id=? where id = 9"; //改
//String sql = "delete from employee where id > ?"; //删
//预处理添加数据
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, 9); //设置参数1,即id=9
ps.setString(2,"蒂花之秀");
ps.setString(3,"男");
DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
Date myDate2 = dateFormat2.parse("1993-09-13");
ps.setDate(4,new java.sql.Date(myDate2.getTime()));
ps.setInt(5,24);
ps.setInt(6, 8);
ps.executeUpdate(); //执行更新
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

四. DDL语句操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.lousen.test_10;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class SqlTest_6 {
public static void main(String[] args){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false","lousen", "1135497143");
//String sql = "create table test_3(id int primary key,name varchar(255) not null)"; //建表
//String sql = "alter table test_3 add (sex varchar(10) default '男')"; //修改表
String sql = "drop table test_3"; //删除表
PreparedStatement ps = con.prepareStatement(sql);
System.out.println(ps.executeUpdate()); //执行更新并输出受影响的行数
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

五. 操作日期类型

1
2
String sql = "select last_name,salary,dept_id from s_emp where start_date=? ";
prepareStatement.setDate();

这里的时间类型是 java.sql.Date
我们通常使用的是 java.util.Date
SimpleDateFormat 类可以帮助我们把String 转化成java.util.Date
java.util.Date 可以通过时间戳,转化成java.sql.Date

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//读mysql数据库日期类型
public static void read(Connection conn) throws Exception {
Statement stat = conn.createStatement();
String sql = "select last_name,start_date from s_emp";
ResultSet rs = stat.executeQuery(sql);
while(rs.next()) {
String name = rs.getString(1);
Date date = rs.getDate(2);
java.util.Date d = new java.util.Date(date.getTime());
SimpleDateFormat format = new SimpleDateFormat
("YYYY-M-dd HH:mm:ss E");
String str = format.format(d);
System.out.println(name+" "+str);
}
JDBCUtils.close(rs, stat, conn);
}
//将日期类型写入mysql数据库
public static void write(Connection conn) throws Exception {
String sql = "insert into s_emp(id,last_name,start_date)"
+ " values(?,?,?)";
PreparedStatement prep = conn.prepareStatement(sql);
prep.setInt(1, 7777);
prep.setString(2, "tom");
SimpleDateFormat format = new SimpleDateFormat
("yyyy-MM-dd HH:mm:ss");
String str = "2018-07-12 14:52:00";
java.util.Date d = format.parse(str);
Date date = new java.sql.Date(d.getTime());
System.out.println(date);
prep.setDate(3, date);
prep.execute();
JDBCUtils.close(null, prep, conn);
}

最后更新: 2020年07月27日 03:40

原始链接: https://www.lousenjay.top/2018/01/25/JDBC编程/