通过JDBC连接
1.简介
JDBC是一套执行SQL语句的标准Java API编程接口,应用程序可调用API接口连接数据库,并使用SQL语句对数据库进行操作。
应用程序与数据库连接的关系如下:
2.文件准备
连接不同种类的数据库时,JDBC需要联系不同的数据库驱动。
a.下载不同驱动JAR包:
MySQL数据库所需的MySQL驱动jar包:https://dev.mysql.com/downloads/
Oracle数据库所需的Oracle驱动jar包:https://www.mysql.com/
b.导入数据库驱动:
3.常用API
(1)Driver接口:
必须实现的JDBC驱动接口,可加载驱动jar包
(2)DriverManager类:
其方法registerDriver()可用于加载JDBC驱动
(3)Connection接口:
是Java程序和数据库的连接,可访问并操作数据库
(4)Statement接口:
用于执行静态SQL语句,并会返回一个结果对象。
String sql="select * from user where id=3";
(5)PreparedStatement接口
是Statement的子接口,用于执行预编译的SQL语句,并会返回一个结果对象。
String sql="select * from user where id=?";
(6)ResultSet接口
保存执行SQL语句返回的结果集。
4.代码实现
(1)搭建数据库环境-创建数据库表
create table stu2(
id int primary key auto_increment,//可不予赋值且自动增长
name varchar(20) not null ,
age int not null);
(2)编写JDBC程序-连接数据库
Class.forName("com.mysql.cj.jdbc.Driver");
//通过字符串的形式传入驱动程序并加载注册
String url="jdbc:mysql://localhost:3306/db1?serverTimezone=GMT%2B8";
String user="root";
String password="12345";
con=DriverManager.getConnection(url, user, password);//获取连接
System.out.println("连接成功!");
(3)实现对数据库的操作程序-增删改查
executeQuery()用于执行查询语句,返回ResultSet对象
executUpdate()用于执行增删改语句,返回int行数对象
import java.sql.*;
public class JDBC {
static ResultSet rs=null; static Statement stmt=null;
static PreparedStatement pstmt=null;
static Connection con;
public static void ShowAllDate() throws Exception {//创建一个显示数据方法
stmt = con.createStatement();//创建执行静态SQL语句的statement接口对象
rs = stmt.executeQuery("select * from stu2");//实现执行静态SQL语句,并返回查询的结果对象
while (rs.next()) {
String name = rs.getString("name");//用ResultSet对象装执行查询的结果
int age = rs.getInt("age");
String password = rs.getString("password");
System.out.println("学生姓名:"+name +"年龄:"+age+"密码:"+password);
}}
public static void add(String name, int age, String password) throws Exception {
String sql= "insert into stu2(name,age,password) values(?,?,?)";//创建动态SQL插入语句
pstmt= con.prepareStatement(sql);//预编译方法执行动态SQL语句
pstmt.setString(1,"name");//将参数设置为第一个占位符?
pstmt.setInt(2,age);//将参数设置为第二个占位符?
pstmt.setString(3,"password");//将参数设置为第三个占位符?
pstmt.executeUpdate();//实现执行更新语句,并返回一个int行数的结果对象
}
public static void delete(int id)throws Exception{//创建一个删除方法
String sql= "delete from stu2 where id=?";//创建动态SQL插入语句
pstmt= con.prepareStatement(sql);//预编译方法执行动态SQL语句
pstmt.setInt(1,id);//将参数设置为第一个占位符?
pstmt.executeUpdate();//实现执行更新语句,并返回一个int行数的结果对象
}
public static void update(int id,int age)throws Exception{
String sql= "update stu2 set age=? where id=?";//创建动态SQL插入语句
pstmt= con.prepareStatement(sql);//预编译方法执行动态SQL语句
pstmt.setInt(1,age);//将参数设置为第一个占位符?
pstmt.setInt(2,id);//将参数设置为第一个占位符?
pstmt.executeUpdate();//实现执行更新语句,并返回一个int行数的结果对象
}
public static void main(String[] args) throws Exception {
try{
Class.forName("com.mysql.cj.jdbc.Driver");
//通过字符串的形式传入驱动程序并加载注册
String url="jdbc:mysql://localhost:3306/db1?serverTimezone=GMT%2B8";
String user="root";
String password="12345";
con=DriverManager.getConnection(url, user, password);//获取连接
System.out.println("连接成功!");
System.out.println("添加新同学后结果:");
JDBC.add("水龙头", 22,"1238");
JDBC.ShowAllDate();
System.out.println("删除id为1的同学后结果:");
JDBC.delete(1);
JDBC.ShowAllDate();
System.out.println("将id为2的同学修改年龄为19后结果:");
JDBC.update(2, 19);
JDBC.ShowAllDate();
}catch(Exception e){e.printStackTrace();//在命令行打印异常信息出错的位置及原因。
}finally{//回收资源
if (rs!=null){rs.close();
}else if (pstmt!=null){pstmt.close();
}else if (stmt!=null){stmt.close();
}else if (con!=null){con.close();
}
}
}
}
最后,希望能对大家有帮助,小可爱们整理不易,给个小拇指鼓励一下吧!!!