JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统(DBMS)、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源
JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。
JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。
- /*
- Navicat Premium Data Transfer
- Source Server : demossmtest
- Source Server Type : MySQL
- Source Server Version : 80023
- Source Host : localhost:3306
- Source Schema : students
- Target Server Type : MySQL
- Target Server Version : 80023
- File Encoding : 65001
- Date: 05/07/2022 18:13:43
- */
-
- SET NAMES utf8mb4;
- SET FOREIGN_KEY_CHECKS = 0;
-
- -- ----------------------------
- -- Table structure for student
- -- ----------------------------
- DROP TABLE IF EXISTS `student`;
- CREATE TABLE `student` (
- `stuId` int NOT NULL,
- `stuName` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
- `stuSex` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
- `stuAge` int NULL DEFAULT NULL,
- PRIMARY KEY (`stuId`) USING BTREE
- ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
-
- -- ----------------------------
- -- Records of student
- -- ----------------------------
- INSERT INTO `student` VALUES (1003, '我想', '男', 35);
- INSERT INTO `student` VALUES (1004, '年少清华', '男', 35);
- INSERT INTO `student` VALUES (1005, '爱的主宰', '男', 520);
- INSERT INTO `student` VALUES (1006, '我相信自己', '男', 520);
- INSERT INTO `student` VALUES (1008, '李四', '男', 35);
-
- SET FOREIGN_KEY_CHECKS = 1;
package Com.Jdbc.Util;//开发者建立的包名
import java.sql.Connection; import java.sql.DriverManager;//导入连接数据库的架包
//加载驱动程序 Class.forName("com.mysql.cj.jdbc.Driver");
//数据库的所在地址 String url = "jdbc:mysql://127.0.0.1:3306/students";
//3 数据库的用户名 String username = "root";
//4 数据库的密码 String password = "123456";
conn = DriverManager.getConnection(url, username, password);
看下面的代码:将常用到的Java功能进行封装:
- package Com.Jdbc.Util;
-
- import java.sql.Connection;
- import java.sql.DriverManager;
-
- public class DBUtil {
- public static Connection getConnection() {
- Connection conn = null;
- try {
- //加载驱动程序
- Class.forName("com.mysql.cj.jdbc.Driver");
- System.out.println("加载驱动类成功");
- //建立数据库
- //数据库的所在地址
- String url = "jdbc:mysql://127.0.0.1:3306/students";
- System.out.println("mysql连接成功");
- //3 数据库的用户名
- String username = "root";
- //4 数据库的密码
- String password = "123456";
- conn = DriverManager.getConnection(url, username, password);
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("数据库连接成功,开始了");
- }
- return conn;
-
- }
-
- //last
- //封装方法
- public static void getClose(Connection conn) {
- try {
- if (conn != null) {
- conn.close();
-
- }
-
- } catch (Exception e) {
- // TODO: handle exception
- e.printStackTrace();
- }
- System.err.println("数据库中的数据运行结束");
- }
-
-
- }
// 第一步 建立链接 Connection conn = DBUtil.getConnection();
// 第二步 创建statement对象 Statement stmt =conn.createStatement();
// 第三步 执行mysql语句 String sql="select *from student"; ResultSet rs =stmt.executeQuery(sql);
//第四步 遍历集合 循环遍历 while(rs.next()) { int stuId=rs.getInt("stuId"); String stuName=rs.getString("stuName"); String stuSex=rs.getString("stuSex"); int stuAge=rs.getInt("stuAge"); System.out.println(stuId+"---------"+stuName+"-----------"+stuSex+"---------"+stuAge); }
- package Com.Jdbc.Java;
-
- import Com.Jdbc.Util.DBUtil;
-
- import java.sql.Connection;
- import java.sql.ResultSet;
- import java.sql.Statement;
-
- /**
- * 查询语句
- */
- public class Test3 {
-
- public static void main(String[] args) throws Exception {
- // 第一步 建立链接
- Connection conn = DBUtil.getConnection();
- // 第二步 创建statement对象
- Statement stmt =conn.createStatement();
- // 第三步 执行mysql语句
- String sql="select *from student";
- ResultSet rs =stmt.executeQuery(sql);
- //第四步 遍历集合 循环遍历
- while(rs.next()) {
- int stuId=rs.getInt("stuId");
- String stuName=rs.getString("stuName");
- String stuSex=rs.getString("stuSex");
- int stuAge=rs.getInt("stuAge");
- System.out.println(stuId+"---------"+stuName+"-----------"+stuSex+"---------"+stuAge);
-
- }
-
- //关闭数据库连接
- DBUtil.getClose(conn);
- }
-
- }
-
-
-
//增加语句 String sql=" INSERT INTO `students`.`student`(`stuId`, `stuName`, `stuSex`, `stuAge`)" + " VALUES (1006, 'I LOVE YOU ', '女', 520)";
//4 执行语句 int count= stmt.executeUpdate(sql); if(count>0) { System.out.println("学生插入成功"); }else { System.out.println("in the end"); }
- package Com.Jdbc.Java;
-
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.sql.Statement;
-
- import Com.Jdbc.Util.DBUtil;
-
- public class Test1 {
- /**
- * 方案一:利用java删除数据库中的数据
- * @param args
- * @throws SQLException
- */
-
- public static void main(String[] args) throws SQLException {
- Connection conn=DBUtil.getConnection();
- System.out.println(conn);
- //获取 statement对象
- Statement stmt =conn.createStatement();
- //增加语句
- String sql=" INSERT INTO `students`.`student`(`stuId`, `stuName`, `stuSex`, `stuAge`)" +
- " VALUES (1006, 'I LOVE YOU ', '女', 520)";
- //4 执行语句
- int count= stmt.executeUpdate(sql);
- if(count>0) {
- System.out.println("学生插入成功");
- }else {
- System.out.println("in the end");
- }
-
- DBUtil.getClose(conn);
-
- }
-
- }
-
String sql="update student set stuSex='男' "; stmt.executeLargeUpdate(sql);
System.out.println("数据库中的数据修改成功"); DBUtil.getClose(conn);
- package Com.Jdbc.Java;
-
- import Com.Jdbc.Util.DBUtil;
-
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.sql.Statement;
-
- /**
- * 修改语句
- */
- public class Test2 {
- /**
- * 修改数据利用就Java代码修改数据
- * @param args
- * @throws SQLException
- */
- public static void main(String[] args) throws SQLException {
- // 建立链接
- Connection conn = DBUtil.getConnection();
- //
- Statement stmt =conn.createStatement();
- String sql="update student set stuSex='男' ";
- stmt.executeLargeUpdate(sql);
- System.out.println("数据库中的数据修改成功");
- DBUtil.getClose(conn);
-
- }
-
- }
String sql = "delete from `student` where stuId=1002"; //删除语句
//4 执行语句 int count = stmt.executeUpdate(sql); if (count > 0) { System.out.println("学生删除成功"); }
- package Com.Jdbc.Java;
-
- import Com.Jdbc.Util.DBUtil;
-
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.sql.Statement;
-
- /**
- * 删除语句
- */
- public class Test4 {
- public static void main(String[] args) throws SQLException {
-
- Connection conn = DBUtil.getConnection();
- System.out.println(conn);
- //获取 statement对象
-
- Statement stmt = conn.createStatement();
- //增加
- String sql = "delete from `student` where stuId=1002";
- ;
- //4 执行语句
- int count = stmt.executeUpdate(sql);
- if (count > 0) {
- System.out.println("学生删除成功");
- }
- }
- }
-
- package Com.Jdbc2;
-
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
-
-
- public class Test{
- public Connection con=null;
- /**
- * 定义方法,用于连接数据库
- */
- public void getConnection() {
- //1.加载插件
- try {
- Class.forName("com.mysql.jdbc.Driver");
- //2.准备连接数据的信息:要连接的数据库的地址 用户名 密码
- String url="jdbc:mysql://localhost:3306/students?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimeZone=UTC";
- String username="root";
- String password="123456";
- //使用设备管理器类根据提供的信息连接数据库
- con=DriverManager.getConnection(url, username, password);
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
- * 增加一条的数据记录
- */
- @org.junit.Test
- public void test1() {
- //添加数据
- getConnection();
- //判断是否连接成功
- if (con!=null) {
- //准备要执行的添加sql语句
- //在jdbc连接数据库中,使用占位符?
- String sql="insert into tb_students(name,age) VALUES(?,?)";
- //准备执行sql语句
- try {
- PreparedStatement ps=con.prepareStatement(sql);
- ps.setString(1, "少年的你");
- ps.setInt(2, 22);
- int count=ps.executeUpdate();
- if (count>0) {
- System.out.println("添加成功");
- }
- //执行完成之后,要断开数据库连接
- ps.close();
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
-
- /**
- * 修改一条数据内容
- */
- @org.junit.Test
- public void test2() {
- //修改语句
- getConnection();
- if (con!=null) {
- String sql="update tb_students set age=? where id=?";
- try {
- PreparedStatement ps=con.prepareStatement(sql);
- ps.setInt(1, 10023);
- ps.setInt(2, 122);
- int i=ps.executeUpdate();
- if (i>0) {
- System.out.println("修改成功");
- }
- ps.close();
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
-
- /**
- * 删除一条数据内容
- */
- @org.junit.Test
- public void test3() {
- //删除语句
- getConnection();
- if (con!=null) {
- String sql="delete from tb_students where id=?";
- try {
- PreparedStatement ps=con.prepareStatement(sql);
- ps.setInt(1, 1);
- int i=ps.executeUpdate();
- if (i>0) {
- System.out.println("删除成功");
- }
- ps.close();
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- /**
- * 查询的内容
- */
- @org.junit.Test
- public void test4() {
- //查询语句
- //根据id=1查询学生的信息
- getConnection();
- if (con!=null) {
- String sql="select * from tb_students where id=?";
- try {
- PreparedStatement ps=con.prepareStatement(sql);
- ps.setInt(1, 1);
- ResultSet rs=ps.executeQuery();
- //因为查询出来的数据是一张表的结构,游标默认停留在第一行,是字段名
- //所有需要获得的数据要从第二行开始
- if (rs.next()) {
- int id=rs.getInt(1);
- String name=rs.getString(2);
- int age=rs.getInt(3);
- System.out.println(id+"--"+name+"--"+age);
- }
- //断开连接
- rs.close();
- ps.close();
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
-
- }
-
- }
-
-
- /**
- * 修改的数据内容
- */
- @org.junit.Test
- public void test5() {
- List<Map<String, Object>> oList=new ArrayList<Map<String,Object>>();
- //查询多行数据
- getConnection();
- if (con!=null) {
- String sql="select * from tb_student";
- try {
- PreparedStatement ps=con.prepareStatement(sql);
- ResultSet rs=ps.executeQuery();
- while (rs.next()) {
- int id=rs.getInt(1);//4
- String name=rs.getString(2);//王六
- int age=rs.getInt(3);//25
- Map<String, Object> oMap=new HashMap<String, Object>();
- oMap.put("id", id);
- oMap.put("name", name);
- oMap.put("age", age);
- oList.add(oMap);
- }
- //断开连接 colse()
- rs.close();
- ps.close();
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- //循环遍历集合,显示所有数据
- for (Map<String, Object> map : oList) {
- System.out.println(map);
- }
-
- //jdk1.8的新特性
- List<String> o=new ArrayList<String>();
- o.add("abc");
- o.add("123");
- o.add("456");
- o.add("789");
- //labdam表达式
- o.forEach(s->System.out.println(s));
-
- }
-
-
- }