jdbc

3 篇文章 0 订阅

一个mysql的查询,将查询到的数据写入到list集合并打印

//加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //建立连接.通过驱动管理器获取连接对像
            String url="jdbc:mysql://127.0.0.1:3306/yangheng";
            String user="root";
            String password="tiger";
            Connection conn=DriverManager.getConnection(url,user,password);
            //获取通道.根据连接的创建方法创建通道
            Statement stm =conn.createStatement();
            //执行sql语句,并存到结果集合
            String sql="select * from ha";
            ResultSet result=stm.executeQuery(sql);
            //list集合,存stuent对象
            List<Student> list =new ArrayList<>();
            while(result.next()){
                Student stu=new Student();
                stu.setName(result.getString("name"));
                stu.setAge(result.getString("age"));
                stu.setId(result.getString("id"));
                list.add(stu);


            }
            //遍历list集合
            for (Student student : list) {
                System.out.println(student);
            }

jdbc的三个通道

通道分为三种,
|–>状态通道 Statement
|–>准备通道 PreparedStatement
|–>存储过程通道 CallableStatement
状态通道是接口,
准备通道 是 状态通道 的子类,
存储过程通道是准备通道的子接口
准备通道的优点
1:可以防止sql注入,
2:在特定的驱动数据库下相对效率要高于状态通道.但不绝对
3:不需要频繁编译,因为已经预加载了.(将sql语句的元素用占位符?替代,在下面赋值)
准备通道的获取,
是类:通过connection.prepareStatement() 方法获取
操作时遇到的事务操作,
语句 connection.setAutoCommit(flase); 设置不自动提交事务,
在操作时出现异常的话,需要回滚,, 回滚需要在提交前面,可以放在catch中,以保证数组库事务的执行

关于执行语句后的返回值的接收
    如果是增删改操作的话,应该采用preparedStratement.executeUpdata()来接收, 返回int类型数值
        表示有几行数据受到影响
    如果是查询操作的话,execute()方法返回的是一个boolean型元素,表示判断有没有结果集.(一般没啥用)
                  executeQuery() 返回一个结果集(ResultSet) 

存储过程通道
存储过程创建相对麻烦,但是做好后很方便,可以重复调用,相当于一个方法,通过传值进去完成对数据库的操作
获取存储过程通道 CallableStatement c=connection.prepareCall(“{call 存储过程名(?,?)}”);

存储过程通道很少有返回值,因为他不擅长查询操作,需要的话可以在存储过程中的加入相应的返回语句
        存储过程通道就是在通过调用存储过程来进行对数据库的操作      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值