• java数据库连接操作合集


    import com.alibaba.druid.pool.DruidDataSourceFactory;
    import org.testng.annotations.Test;
    
    import javax.sql.DataSource;
    import java.io.FileInputStream;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.Properties;
    //大概的流程就是:1. 注册驱动 2.设置连接路径 3.用户名密码 4.设置conneion连接对象 5.设置sql语句 6.创建执行sql语句对象(preparedstatement) 7.执行并且处理返回值 8.释放
    
    public class trainDemo1 {
    //    @Test
        //写路径单个连接     (对数据库操作)
        public void test1()throws Exception{
            Class.forName("com.mysql.jdbc.Driver");//注册驱动 这个类是驱动类
            String url = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false&useServePrepStmts=true";//这个是连接路径 SSL是加密 后面的是预编译
            String name = "root";
            String password = "123";
            Connection conn = DriverManager.getConnection(url,name,password);
            String sql = "create database if not exists lp";
            PreparedStatement execute = conn.prepareStatement(sql);
            int count = execute.executeUpdate();
            execute.close();
            conn.close();
        }
    
    //    @Test
        //省略写路径单个连接          (对数据表操作)
        public void test2()throws Exception{
            String url = "jdbc:mysql:///lp?useSSL=false&useServePrepStmts=true";
            String name = "root";
            String passwd = "123";
            Connection conn = DriverManager.getConnection(url,name,passwd);
    
            String sql = "create table if not exists stu(" +
                    "id INT primary key ," +
                    "name char(5)," +
                    "age INT )";
    
            PreparedStatement execute = conn.prepareStatement(sql);
            int count = execute.executeUpdate();
            execute.close();
            conn.close();
        }
    
    //    @Test
        //插入数据
        public void test3() throws Exception{
            String url = "jdbc:mysql:///lp?useSSL=false&useServePrepStmts=true";
            String name = "root";
            String passwd = "123";
            Connection conn = DriverManager.getConnection(url,name,passwd);
    
            //这里的是接收前端给的数据   尽量用包装类来定义类型,这里只做演示
            int id = 1;
            String names = "pop";
            int age = 2;
    
            String sql = "insert into stu values(?,?,?)";
            PreparedStatement execute = conn.prepareStatement(sql);
            //其实是有直接的createstatment的 但是为了防止SQL注入问题出现,就是用这个类型
            //设置?初始值 , 这样设置后就会在底层转义, 就不会导致SQL注入问题出现
            execute.setInt(1,id);
            execute.setString(2,names);
            execute.setInt(3,age);
    
            int cout = execute.executeUpdate();
            System.out.println(cout>0);
            execute.close();
            conn.close();
        }
    
    
        @Test
        //获取数据 返回的是DefaultSet类型
        //这里换一种形式来建立连接, 用数据库连接池来连接  这里就需要jar包 和 配置文件
        public void test4()throws Exception{
            //1.导入jar包
            //2.写配置文件
            //3.加载配置文件(我们用对象来加载)
            Properties prop = new Properties();
            prop.load(new FileInputStream("G:\\javapack\\train\\mytrain\\src\\init.ini"));
            //4.创建数据库连接池对象(记得:德鲁伊数据库工厂)
            DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
            //5.获取连接对象
            Connection conn = dataSource.getConnection();
            //连接成功 (如果没成功,大部分可能是配置文件写的有问题)
    
            String sql = "select *from stu";
            PreparedStatement execute = conn.prepareStatement(sql);
            ResultSet rs = execute.executeQuery();
            //这里要注意 在没有使用rs.next()时 , 其实是有一个游标指向的是数据的字段名那行
            //用了next()方法,游标才会向下移动一行,并且自动判断是否为有效行,如果是就可以获取数据,如果不是就无法获取
    
    
            //当然 如果数据比较多我们也可以定义一个对象来封装,用集合来储存
            ArrayList array = new ArrayList<>();
            while (rs.next()){
                int id = rs.getInt(1); //也可以写字段名  这里就是根据数据表来按照类型获取数据
                String name = rs.getString("name"); //有点像python中的loc和iloc
                int age = rs.getInt("age");
                pojo sign = new pojo(id,name,age);
                array.add(sign);
            }
    
            //然后通过集合来打印数据 都是可以的
            //最后要记得释放空间(范围小的先释放)
            rs.close();
            execute.close();
            conn.close();
        }
    }
    
  • 相关阅读:
    Panda3d 场景管理
    最大公约数
    基于Svelte3.x桌面端UI组件库Svelte UI
    【华为Datacom数通认证】HCIA-HCIP-HCIE
    数字时代,医疗健康企业如何通过数字营销创造用户价值
    机器学习 | 贝叶斯优化
    几个常用的Numpy函数详解
    【23-24 秋学期】NNDL 作业5 第四章课后题
    Spring Boot 实现跨域的 5 种方式,总有一种适合你,建议收藏
    Swoole 的异步 Task 任务详解
  • 原文地址:https://blog.csdn.net/m0_74892619/article/details/133550736