目录
下载安装phpstudy工具
下载安装数据库远程连接工具
navcat
准备好数据
创建数据库,建立表,添加记录
jdbc
java连接数据库的驱动
JDBC的全称是Java数据库连接(Java Database Connectivity),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系型数据库,并使用SQL语句来完成对数据库中数据的查询、新增、更新和删除等操作。
idea开发java连接数据库
新建一个maven项目,导入java连接mysql依赖包
创建包,新建查询类
package cn.edu.hgu;
import java.sql.*;
/**
* description:java连接mysql,实现增删改查
* author:不知名小元
* date:2023/11/2 15:32
*/
public class StudentCRUD {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.导入驱动类
Class.forName("com.mysql.jdbc.Driver");
//2.用户信息和URL
String url = "jdbc:mysql://localhost:3307/edu?useUnicode=true&characterEncoding=utf8&useSSL=true";
// localhost:指定为本地。
// 3307:为数据库端口。
// test1:为所需连接的数据库名。
// useUnicode=true&characterEncoding=gbk:为添加编码和解码的格式要求。
// useSSL:安全连接。
// user和password:即是数据库用户名和密码
String user = "root";
String password = "root";
//3.单例模式获取连接
Connection conn = DriverManager.getConnection(url,user,password);
//4.执行SQL的对象
Statement st = conn.createStatement();
//5.执行SQL
String sql = "select * from students";
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
System.out.println("id="+rs.getObject("id"));
System.out.println("sno="+rs.getObject("sno"));
System.out.println("name="+rs.getObject("name"));
System.out.println("sex="+rs.getObject("sex"));
System.out.println("age="+rs.getObject("age"));
System.out.println("addr="+rs.getObject("addr"));
}
//6.释放连接
rs.close();
st.close();
conn.close();
}
}
运行查看结果
添加数据的方法
字符串拼接
//添加数据
public static void dataInsert(int id,String sno,String name,String sex,int age,String addr) throws ClassNotFoundException, SQLException {
//1.导入驱动类
Class.forName("com.mysql.jdbc.Driver");
//2.用户信息和URL
String url = "jdbc:mysql://localhost:3307/edu?useUnicode=true&characterEncoding=utf8&useSSL=true";
// localhost:指定为本地。
// 3307:为数据库端口。
// test1:为所需连接的数据库名。
// useUnicode=true&characterEncoding=gbk:为添加编码和解码的格式要求。
// useSSL:安全连接。
// user和password:即是数据库用户名和密码
String user = "root";
String password = "root";
//3.单例模式获取连接
Connection conn = DriverManager.getConnection(url, user, password);
//4.执行SQL的对象
Statement st = conn.createStatement();
//5.执行SQL
// String sql = "insert into students values(6,4210005,'天’,'男',20,'天津')";
String sql = "insert into student values("
+ id + ",'"
+ sno + "','"
+ name + "','"
+ sex + "',"
+ age + ",'"
+ addr + "')";
st.executeUpdate(sql);
//6.释放连接
st.close();
conn.close();
}
主类调用
运行,查看结果
参数化执行对象
再添加一个方法
执行查看结果
创建DTO对象用于传递数据
添加getter和setter方法
最终的类
改写参数化对象添加数据方法
改写调用方法
执行查看结果
抽取创建连接connection对象的代码为一个方法
改写查询和插入代码
实现数据的删除
数据的修改
查看结果
总体代码
package cn.edu.hgu;
import cn.edu.hgu.dto.StudentDTO;
import java.sql.*;
/**
* description:java连接mysql,实现增删改查
* author:不知名小元
* date:2023/11/2 15:32
*/
public class StudentCRUD {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//输出数据
dataout();
//添加数据
// int id = 8;
// String sno = "4210009";
// String name = "周周";
// String sex = "女";
// int age = 21;
// String addr = "广西南宁";
// StudentDTO studnetDTO = new StudentDTO();
// studnetDTO.setId(9);
// studnetDTO.setSno("4210009");
// studnetDTO.setName("威威");
// studnetDTO.setSex("男");
// studnetDTO.setAge(22);
// studnetDTO.setAddr("广西南宁");
// dataInsert(id,sno,name,sex,age,addr);
// dataInsert2(id,sno,name,sex,age,addr);
// dataInsert2(studnetDTO);
// 修改数据
StudentDTO studnetDTO = new StudentDTO();
studnetDTO.setId(8);
studnetDTO.setSno("4210009");
studnetDTO.setName("威威");
studnetDTO.setSex("男");
studnetDTO.setAge(22);
studnetDTO.setAddr("广西南宁");
dataUpdateById(studnetDTO);
// //删除数据
// dataDeleteById(9);
}
//输出数据
public static void dataout() throws ClassNotFoundException,SQLException {
// //1.导入驱动类
// Class.forName("com.mysql.jdbc.Driver");
// //2.用户信息和URL
// String url = "jdbc:mysql://localhost:3307/edu?useUnicode=true&characterEncoding=utf8&useSSL=true";
// // localhost:指定为本地。
3307:为数据库端口。
test1:为所需连接的数据库名。
useUnicode=true&characterEncoding=gbk:为添加编码和解码的格式要求。
useSSL:安全连接。
user和password:即是数据库用户名和密码
// String user = "root";
// String password = "root";
// //3.单例模式获取连接
// Connection conn = DriverManager.getConnection(url, user, password);
Connection conn = getConnection();
//4.执行SQL的对象
Statement st = conn.createStatement();
//5.执行SQL
String sql = "select * from students";
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
System.out.println("id=" + rs.getObject("id"));
System.out.println("sno=" + rs.getObject("sno"));
System.out.println("name=" + rs.getObject("name"));
System.out.println("sex=" + rs.getObject("sex"));
System.out.println("age=" + rs.getObject("age"));
System.out.println("addr=" + rs.getObject("addr"));
}
//6.释放连接
st.close();
conn.close();
}
//添加数据
public static void dataInsert(int id,String sno,String name,String sex,int age,String addr) throws ClassNotFoundException, SQLException {
// //1.导入驱动类
// Class.forName("com.mysql.jdbc.Driver");
// //2.用户信息和URL
// String url = "jdbc:mysql://localhost:3307/edu?useUnicode=true&characterEncoding=utf8&useSSL=true";
// // localhost:指定为本地。
3307:为数据库端口。
test1:为所需连接的数据库名。
useUnicode=true&characterEncoding=gbk:为添加编码和解码的格式要求。
useSSL:安全连接。
user和password:即是数据库用户名和密码
// String user = "root";
// String password = "root";
// //3.单例模式获取连接
// Connection conn = DriverManager.getConnection(url, user, password);
Connection conn = getConnection();
//4.执行SQL的对象
Statement st = conn.createStatement();
//5.执行SQL
// String sql = "insert into students values(6,4210005,'天’,'男',20,'天津')";
String sql = "insert into students values("
+ id + ",'"
+ sno + "','"
+ name + "','"
+ sex + "',"
+ age + ",'"
+ addr + "')";
st.executeUpdate(sql);
//6.释放连接
st.close();
conn.close();
}
//参数化执行对象
// public static void dataInsert2(int id,String sno,String name,String sex,int age,String addr) throws ClassNotFoundException, SQLException {
public static void dataInsert2(StudentDTO studentDTO) throws ClassNotFoundException, SQLException {
//1.导入驱动类
Class.forName("com.mysql.jdbc.Driver");
//2.用户信息和URL
String url = "jdbc:mysql://localhost:3307/edu?useUnicode=true&characterEncoding=utf8&useSSL=true";
// localhost:指定为本地。
// 3307:为数据库端口。
// test1:为所需连接的数据库名。
// useUnicode=true&characterEncoding=gbk:为添加编码和解码的格式要求。
// useSSL:安全连接。
// user和password:即是数据库用户名和密码
String user = "root";
String password = "root";
//3.单例模式获取连接
Connection conn = DriverManager.getConnection(url, user, password);
//4.创建参数化的执行对象
String sql = "insert into students values(?,?,?,?,?,?)";
PreparedStatement ps =conn.prepareStatement(sql);
// ps.setInt(1,id);
// ps.setString(2,sno);
// ps.setString(3,name);
// ps.setString(4,sex);
// ps.setInt(5,age);
// ps.setString(6,addr);
ps.setInt(1,studentDTO.getId());
ps.setString(2,studentDTO.getSno());
ps.setString(3,studentDTO.getName());
ps.setString(4,studentDTO.getSex());
ps.setInt(5,studentDTO.getAge());
ps.setString(6,studentDTO.getAddr());
ps.executeUpdate();
//5.释放连接
ps.close();
conn.close();
}
//获取连接
public static Connection getConnection() throws ClassNotFoundException, SQLException {
//1.导入驱动类
Class.forName("com.mysql.jdbc.Driver");
//2.用户信息和URL
String url = "jdbc:mysql://localhost:3307/edu?useUnicode=true&characterEncoding=utf8&useSSL=true";
// localhost:指定为本地。
// 3307:为数据库端口。
// test1:为所需连接的数据库名。
// useUnicode=true&characterEncoding=gbk:为添加编码和解码的格式要求。
// useSSL:安全连接。
// user和password:即是数据库用户名和密码
String user = "root";
String password = "root";
//3.单例模式获取连接
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
//删除数据
public static void dataDeleteById(int id) throws SQLException, ClassNotFoundException {
//获取连接
Connection conn = getConnection();
//创建参数化的执行对象
String sql = "delete from students where id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1,id);
ps.executeUpdate();
//关闭资源
ps.close();
conn.close();
}
//参数化修改数据
public static void dataUpdateById(StudentDTO studentDTO) throws SQLException, ClassNotFoundException {
//获取连接
Connection conn = getConnection();
//创建参数化的执行对象
String sql = "update students set sno = ? ,name = ? ,sex = ? ,age = ? ,addr = ? where id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,studentDTO.getSno());
ps.setString(2,studentDTO.getName());
ps.setString(3,studentDTO.getSex());
ps.setInt(4,studentDTO.getAge());
ps.setString(5,studentDTO.getAddr());
ps.setInt(6,studentDTO.getId());
ps.executeUpdate();
//关闭资源
ps.close();
conn.close();
}
}
package cn.edu.hgu.dto;
/**
* description:学生类对应表studennts
* author:不知名小元
* date:2023/11/2 18:56
*/
public class StudentDTO {
int id;
String sno;
String name;
String sex;
int age;
String addr;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}