首页 > 数据库 >数据库JDBC

数据库JDBC

时间:2023-10-30 22:24:51浏览次数:31  
标签:JDBC String 数据库 resultSet student sql public

1. JDBC

  1. java database connectivity java数据库的连接。
  2. java中针对操作数据库,提供的⼀套规范, ⽐如⼀些接⼝。

2、.jar包 ( 8.x的, 5.x的)

3、操作

  1. DriverManager 注册驱动创建连接。
  2. Connection 数据库的连接对象。
  3. Statement 执⾏sql语句的对象。
  4. Result 查询之后的结果。

4、jdbc操作步骤

  1. 加载数据库的驱动:①:把数据库的jar包导⼊到项⽬中。②:通过反射加载驱动对象。
  2. 创建数据库的连接。
  3. 编写sql语句,执⾏sql语句。
  4. 如果查询,会得到结果集,遍历得到的内容。
  5. 关闭资源

5、案例

  1. @Test
        public void testSelect() throws ClassNotFoundException, SQLException {
    //        1. 加载数据库的驱动
    //           1. 把数据库的jar包导入到项目中
    //           2. 通过反射加载驱动对象
            Class.forName("com.mysql.cj.jdbc.Driver");  //mysql 8.x
    //        2. 创建数据库的连接
    //        参数1: url:数据库的地址    jdbc:mysql://数据库的IP地址:端口号/数据库名称
    //        参数2: userName 用户名    root
    //        参数3: passWord 密码      123456
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool",
                    "root","123456");
    //        3. 编写sql语句,执行sql语句
            //编写SQL语句
            String sql="select StudentNo,StudentName from student";
    //       创建statement对象来执行sql语句
            Statement statement = conn.createStatement();
            ResultSet resultSet = statement.executeQuery(sql);
    //        4. 如果查询,会得到结果集,遍历得到的内容
            while(resultSet.next()){
                int studentNo =resultSet.getInt("StudentNo");
                String studentName =resultSet.getString("StudentName");
                System.out.println("学号:"+studentNo+",姓名:"+studentName);
            }
    //        5. 关闭资源
            resultSet.close();
            statement.close();
            conn.close();
    
    
        }

     

  2.  @Test
        public void testInsert() throws ClassNotFoundException, SQLException {
    //        1. 加载数据库的驱动
    //           1. 把数据库的jar包导入到项目中
    //           2. 通过反射加载驱动对象
            Class.forName("com.mysql.cj.jdbc.Driver");  //mysql 8.x
    //        2. 创建数据库的连接
    //        参数1: url:数据库的地址    jdbc:mysql://数据库的IP地址:端口号/数据库名称
    //        参数2: userName 用户名    root
    //        参数3: passWord 密码      123456
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool",
                    "root","123456");
    //        3. 编写sql语句,执行sql语句
            //编写SQL语句
            String sql="insert into student(StudentNo,StudentName,Email) values(1018,'小帅','[email protected]')";
    //       创建statement对象来执行sql语句
            Statement statement = conn.createStatement();
            int i = statement.executeUpdate(sql);
    //        4. 如果查询,会得到结果集,遍历得到的内容
            System.out.println(i);
    //        5. 关闭资源;
    
            statement.close();
            conn.close();
        }

     

  3. //更新数据
        @Test
        public void testUpdate() throws ClassNotFoundException, SQLException {
    //        1. 加载数据库的驱动
    //           1. 把数据库的jar包导入到项目中
    //           2. 通过反射加载驱动对象
            Class.forName("com.mysql.cj.jdbc.Driver");  //mysql 8.x
    //        2. 创建数据库的连接
    //        参数1: url:数据库的地址    jdbc:mysql://数据库的IP地址:端口号/数据库名称
    //        参数2: userName 用户名    root
    //        参数3: passWord 密码      123456
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool",
                    "root","123456");
    //        3. 编写sql语句,执行sql语句
            //编写SQL语句
            String sql="update student set StudentName='小帅帅' where StudentNo=1018";
    //       创建statement对象来执行sql语句
            Statement statement = conn.createStatement();
            int i = statement.executeUpdate(sql);
    //        4. 如果查询,会得到结果集,遍历得到的内容
            System.out.println(i);
    //        5. 关闭资源;
    
            statement.close();
            conn.close();
    
    
        }

     

  4.  @Test
        public void testDelete() throws ClassNotFoundException, SQLException {
    //        1. 加载数据库的驱动
    //           1. 把数据库的jar包导入到项目中
    //           2. 通过反射加载驱动对象
            Class.forName("com.mysql.cj.jdbc.Driver");  //mysql 8.x
    //        2. 创建数据库的连接
    //        参数1: url:数据库的地址    jdbc:mysql://数据库的IP地址:端口号/数据库名称
    //        参数2: userName 用户名    root
    //        参数3: passWord 密码      123456
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool",
                    "root","123456");
    //        3. 编写sql语句,执行sql语句
            //编写SQL语句
            String sql="delete from student where StudenNo=1018";
    //       创建statement对象来执行sql语句
            Statement statement = conn.createStatement();
            int i = statement.executeUpdate(sql);
    //        4. 如果查询,会得到结果集,遍历得到的内容
            System.out.println(i);
    //        5. 关闭资源;
    
            statement.close();
            conn.close();
    
    
        }

     

  5. public class Student {
        private int StudenNo;
        private String LoginPwd;
        private String StudentName;
        private String sex;
        private int GradeId;
        private String Phone;
        private String Address;
        private String BornDate;
        private String Email;
        private String IdentityCard;
    
        public Student() {
        }
    
        public Student(int studenNo, String loginPwd, String studentName, String sex, int gradeId, String phone, String address, String bornDate, String email, String identityCard) {
            StudenNo = studenNo;
            LoginPwd = loginPwd;
            StudentName = studentName;
            this.sex = sex;
            GradeId = gradeId;
            Phone = phone;
            Address = address;
            BornDate = bornDate;
            Email = email;
            IdentityCard = identityCard;
        }
    
        public int getStudenNo() {
            return StudenNo;
        }
    
        public void setStudenNo(int studenNo) {
            StudenNo = studenNo;
        }
    
        public String getLoginPwd() {
            return LoginPwd;
        }
    
        public void setLoginPwd(String loginPwd) {
            LoginPwd = loginPwd;
        }
    
        public String getStudentName() {
            return StudentName;
        }
    
        public void setStudentName(String studentName) {
            StudentName = studentName;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public int getGradeId() {
            return GradeId;
        }
    
        public void setGradeId(int gradeId) {
            GradeId = gradeId;
        }
    
        public String getPhone() {
            return Phone;
        }
    
        public void setPhone(String phone) {
            Phone = phone;
        }
    
        public String getAddress() {
            return Address;
        }
    
        public void setAddress(String address) {
            Address = address;
        }
    
        public String getBornDate() {
            return BornDate;
        }
    
        public void setBornDate(String bornDate) {
            BornDate = bornDate;
        }
    
        public String getEmail() {
            return Email;
        }
    
        public void setEmail(String email) {
            Email = email;
        }
    
        public String getIdentityCard() {
            return IdentityCard;
        }
    
        public void setIdentityCard(String identityCard) {
            IdentityCard = identityCard;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "StudenNo=" + StudenNo +
                    ", LoginPwd='" + LoginPwd + '\'' +
                    ", StudentName='" + StudentName + '\'' +
                    ", sex='" + sex + '\'' +
                    ", GradeId=" + GradeId +
                    ", Phone='" + Phone + '\'' +
                    ", Address='" + Address + '\'' +
                    ", BornDate='" + BornDate + '\'' +
                    ", Email='" + Email + '\'' +
                    ", IdentityCard='" + IdentityCard + '\'' +
                    '}';
        }
    }

     

  6. import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    
    public class JDBCTest2 {
        private static final String DRIVER ="com.mysql.cj.jdbc.Driver";
        private static final String URL = "jdbc:mysql://localhost:3306/myschool";
        private static final String USER = "root";
        private static final String PASSWORD = "123456";
    
        public static void main(String[] args) throws SQLException, ClassNotFoundException {
    //        testSelect();
            testSelect2("张三");
        }
    
        //查所有
        public static void testSelect() throws ClassNotFoundException, SQLException {
            //        1. 加载数据库的驱动
    //           1. 把数据库的jar包导入到项目中
    //           2. 通过反射加载驱动对象
            Class.forName(DRIVER);
            //创建数据库的连接
            Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
            //编写sql语句,执行sql语句
            String sql = "select * from student";
            Statement statement = conn.createStatement();
            ResultSet resultSet = statement.executeQuery(sql);
            //        4. 如果查询,会得到结果集,遍历得到的内容
            //封装业务数据,把一行封装到一个Java对象中,把所有行封装到一个Java集合中
            Student student=null;
            List<Student> studentList = new ArrayList<Student>();
            while (resultSet.next()){
                student = new Student();
                student.setStudenNo(resultSet.getInt("StudentNo"));
                student.setLoginPwd(resultSet.getString("LoginPwd"));
                student.setStudentName(resultSet.getString("StudentName"));
                student.setSex(resultSet.getString("Sex"));
                student.setGradeId(resultSet.getInt("GradeId"));
                student.setPhone(resultSet.getString("Phone"));
                student.setAddress(resultSet.getString("Address"));
                student.setBornDate(resultSet.getString("BornDate"));
                student.setEmail(resultSet.getString("Email"));
                student.setIdentityCard(resultSet.getString("BornDate"));
                studentList.add(student);
                System.out.println(student);
            }
            //        5. 关闭资源
            resultSet.close();
            statement.close();
            conn.close();
        }
    
        //根据学生姓名查学生信息
        public static void testSelect2(String name) throws ClassNotFoundException, SQLException {
            //        1. 加载数据库的驱动
    //           1. 把数据库的jar包导入到项目中
    //           2. 通过反射加载驱动对象
            Class.forName(DRIVER);
            //创建数据库的连接
            Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
            //编写sql语句,执行sql语句
            String sql = "select * from student where StudentName=?";
            PreparedStatement preparedStatement = conn.prepareStatement(sql);
            preparedStatement.setString(1,name);
            ResultSet resultSet = preparedStatement.executeQuery();
            //        4. 如果查询,会得到结果集,遍历得到的内容
            //封装业务数据,把一行封装到一个Java对象中,把所有行封装到一个Java集合中
            Student student=null;
            List<Student> studentList = new ArrayList<Student>();
            while (resultSet.next()){
                student = new Student();
                student.setStudenNo(resultSet.getInt("StudentNo"));
                student.setLoginPwd(resultSet.getString("LoginPwd"));
                student.setStudentName(resultSet.getString("StudentName"));
                student.setSex(resultSet.getString("Sex"));
                student.setGradeId(resultSet.getInt("GradeId"));
                student.setPhone(resultSet.getString("Phone"));
                student.setAddress(resultSet.getString("Address"));
                student.setBornDate(resultSet.getString("BornDate"));
                student.setEmail(resultSet.getString("Email"));
                student.setIdentityCard(resultSet.getString("BornDate"));
                studentList.add(student);
                System.out.println(student);
            }
            //        5. 关闭资源
            resultSet.close();
            preparedStatement.close();
            conn.close();
        }
    
        //插入一条数据
        public static void testInsert(Student student) throws ClassNotFoundException, SQLException {
            //        1. 加载数据库的驱动
    //           1. 把数据库的jar包导入到项目中
    //           2. 通过反射加载驱动对象
            Class.forName(DRIVER);
            //创建数据库的连接
            Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
            //编写sql语句,执行sql语句
            String sql = "insert into student value (?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement preparedStatement = conn.prepareStatement(sql);
            preparedStatement.setInt(1,student.getStudenNo());
            preparedStatement.setString(2,student.getLoginPwd());
            preparedStatement.setString(3,student.getStudentName());
            preparedStatement.setString(4,student.getSex());
            preparedStatement.setInt(5,student.getGradeId());
            preparedStatement.setString(6,student.getPhone());
            preparedStatement.setString(7,student.getAddress());
            preparedStatement.setString(8,student.getBornDate());
            preparedStatement.setString(9,student.getEmail());
            preparedStatement.setString(10,student.getIdentityCard());
            int i = preparedStatement.executeUpdate();
            System.out.println(i);
            //        5. 关闭资源
            preparedStatement.close();
            conn.close();
        }
        //事务 使用account表 A用户给B用户转钱,如果A用户钱变负数则回滚,如果为正数则提交
        public static void testTransaction(String name1,String name2,int m) throws ClassNotFoundException, SQLException {
            //1. 加载数据库的驱动
            //    1. 把数据库的jar包导入到项目中
            //    2. 通过反射加载驱动对象
            Class.forName(DRIVER);
            //2. 创建数据库的连接
            Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
            //1. 关闭自动提交
            conn.setAutoCommit(false);
            //3. 编写sql语句,执行sql语句
            String sql1="update account set money=money-? where name=?";
            String sql2="update account set money=money+? where name=?";
            PreparedStatement preparedStatement = conn.prepareStatement(sql1);
            preparedStatement.setInt(1,m);
            preparedStatement.setString(2,name1);
            int i = preparedStatement.executeUpdate();
            preparedStatement = conn.prepareStatement(sql2);
            preparedStatement.setInt(1,m);
            preparedStatement.setString(2,name2);
            i = preparedStatement.executeUpdate();
            //业务逻辑   查A的钱是多少 如果比m大 commit   如果比m少 rollback
            String sql3="select money from account where name=?";
            preparedStatement = conn.prepareStatement(sql3);
            preparedStatement.setString(1,name1);
            ResultSet resultSet = preparedStatement.executeQuery();
            int name1Money=0;
            while(resultSet.next()){
                name1Money = resultSet.getInt("money");
            }
            if(name1Money>=m){
                System.out.println(name1+"给"+name2+"转账成功");
                conn.commit();//提交事务
            }else{
                conn.rollback();//回滚
                System.out.println(name1+"给"+name2+"转账失败,余额不足");
            }
            //恢复自动提交
            conn.setAutoCommit(true);
            //5. 关闭资源
            resultSet.close();
            preparedStatement.close();
            conn.close();
        }
    }

     

标签:JDBC,String,数据库,resultSet,student,sql,public
From: https://www.cnblogs.com/hsk991213/p/17799008.html

相关文章

  • 【转载】Mysql8授予某个用户某个数据库的权限
    参考chatgpt3.5环境软件/系统版本说明mysql8.0.28正文要在MySQL中授予某个用户对某个数据库的权限,你可以使用以下SQL语句:GRANT权限列表ON数据库名.表名TO'用户名'@'主机名';下面是这个语句的各个部分的解释:权限列表:这是你要授予用户的权限列表,可......
  • 使用mysqldump进行数据库备份实战遇到的问题
    [root@mysql~]#mysqldump-uroot-pdb_shop>/opt/db_shop.sqlEnterpassword:mysqldump:Couldn'texecute'SHOWVARIABLESLIKE'gtid\_mode'':Table'performance_schema.session_variables'doesn'texist(1146)原......
  • openGauss学习笔记-110 openGauss 数据库管理-管理用户及权限-Schema
    openGauss学习笔记-110openGauss数据库管理-管理用户及权限-SchemaSchema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。每个数据库包含一个或多个Schema。......
  • 数据库【分库分表】
    一、场景    由于用户数量越来越大会出现以下问题:订单量剧增,单表数据量已经达到了千万的级别了,这个时候的索引查询已经很慢了,所以现在我们的类似这些大数据表的查询性能很差。数据量持续增加,现在我们的磁盘大部分空间都被使用,导致数据库的复制备份操作很缓慢,所以,目前数......
  • com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key
    问题:连接MySQL数据库时抛出异常信息:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:PublicKeyRetrievalisnotallowed一开始aplication.yml配置如下所示:spring:application:name:service-provider-sentinel9999datasource:driver-cl......
  • 数据库信息速递 MongoDB 在开发者工具中集成了AI功能提高开发工作者的效率 (译)...
    MongoDB在6月份向其NoSQLAtlas数据库服务(DBaaS)添加向量搜索功能之后,MongoDB正在为一些工具添加新的生成式AI功能,来以进一步提高开发者的工作效率。这些新功能已经添加到MongoDB的关系迁移工具中如,Compass、AtlasCharts工具中。在文档接口中,MongoDB添加了一个由AI驱动的聊天机器人......
  • 数据库信息速递:你的数据库部署到Serverless 类型的数据库是否合适? (译)...
    serverless类型的数据库在国外的数据行业中持续受到关注原始是什么?原因来自于对于一个开始新项目的应用程序开发人员来说,他们可以配置数据库,不需要担心计算和存储的大小,也不需要微调数据库配置,只需要对工作负载模式和事务量有一个大致的了解,就可以近似估算成本,这个观点非常吸引人,......
  • Oracle系列---【数据库连接数超了,导致数据库连接不上,如何排查当前连接数,以及如何修改
    数据库连接数超了,导致数据库连接不上,如何排查当前连接数,以及如何修改最大连接数限制?1.对比当前连接数和最大连接数如果差的比较少,比如相差十几,二十几,连不上的话,很有可能是用连接池连接,一次申请连接数大于剩余的连接数导致的。#查看当前总连接数SELECTcount(*)FROMV$session......
  • SQL Server数据库创建远程服务器备份计划(小白详细图文教程)
    一、前言最近项目系统做安全加固,以前是本地备份,现在需要做远程内网服务器数据库备份,后期也有可能做异地备份。下面以SQLServer2016内网服务器数据库备份为例,数据库服务器地址:192.168.10.200备份服务器地址:192.168.10.100二、创建存储文件夹192.168.10.100远程100服务器,创建......
  • PostgreSQL数据库toast表数据损坏处理
    一、pg_statistic的toast表数据损坏问题现象在安装插件的时候使用\dx元命令的时候,突然发现报了一个错误:postgres=#\dxERROR:missingchunknumber0fortoastvalue32789inpg_toast_2619根据提示来看,主表字段还留存着ToastPointer,但Toast表中已经没有对应的Chunk条目,怀疑t......