Java对数据库的调用一些常用方法总结

原创 2017年07月30日 16:58:29

本篇博客知识点
1.executeQuery:方法
2.execute方法
3.executeUpdate方法
4,两种获得自动增长的主键方法~
5.学习用jdbc执行批处理

本篇博客调用的数据库为book 表结构如下
这里写图片描述

executeQuery:专门用于查询的方法。返回值为查询结果

    /**
     * executeQuery:专门用于查询的方法。返回值为查询结果
     * @throws Exception 
     */
    @Test
    public void demo1() throws Exception{
        Connection con = ConnUtils.getConnection();
        Statement st = con.createStatement();
        String sql = "select * from book";
        ResultSet rs= st.executeQuery(sql);
        while(rs.next()){
            int id = rs.getInt(1);
            String name = rs.getString("name");
            Double price = rs.getDouble("price");

            String date = rs.getDate("birth")+" "+rs.getTime("birth");
            System.out.println("编号:"+id+",书名:"+name+",价格:"+price+",时间"+date);
        }
        con.close();
    }

细节:rs.getString(参数),参数可以给序号,也可以给字段名字
这里写图片描述

execute:可以用于增、删、改、查。返回值为 boolean型 只有当执行查询时返回值为true

    /**
     * execute:可以用于增、删、改、查。返回值为 boolean型  只有当执行查询时返回值为true
     * @throws Exception
     */
    @Test
    public void demo2() throws Exception{
        Connection con = ConnUtils.getConnection();
        Statement st = con.createStatement();
        String sql_select = "select * from book where price>50";
        String sql_insert = "insert into book(name,price,birth) values('资本论','105.3','1883-5-6 13:11:11');";
        String sql_delete = "delete from book where id=1";
        //update 表名  set 字段名1=值 ,字段名2=值 where 子句[in 子句] [between子句]
        String sql_update = "update book set name='海燕',price=19.6 where id=1 ";
        boolean boo = st.execute(sql_update);
        if(boo){
            ResultSet rs = st.getResultSet();
            while(rs.next()){
                int id = rs.getInt("id");
                String name = rs.getString("name");
                Double price = rs.getDouble("price");
                String date = rs.getDate("birth")+""+rs.getTime("birth");
                System.out.println("编号:"+id+",书名:"+name+",价格:"+price+",时间"+date);
            }
        }
        con.close();
    }

executeUpdate: 除了不能用于查询外,其他增、删、改都能执行,返回值为整形 n– 表示影响的行数

@Test
    public void demo3() throws Exception{
        Connection con = ConnUtils.getConnection();
        Statement st = con.createStatement();
//      String sql_select = "select * from book where price>50";
        String sql_insert = "insert into book(name,price,birth) values('生物进化论','105.3','1883-5-6 13:11:11');";
        String sql_delete = "delete from book where id=1";
        //update 表名  set 字段名1=值 ,字段名2=值 where 子句[in 子句] [between子句]
        String sql_update = "update book set name='海燕',price=19.6 where id=1 ";
        int n = st.executeUpdate(sql_insert);
        System.out.println(n);
        con.close();
    }

通过statemnet获得自动增长的主键~ 插入的时候

    /**
     * 通过statemnet获得自动增长的主键~ 插入的时候
     * st.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
     * st.getGeneratedKeys();
     * @throws Exception
     */
    @Test
    public void getAuto() throws Exception{
        Connection con  = ConnUtils.getConnection();
        Statement st = con.createStatement();
        String sql_insert = "insert into book(name,price,birth) values('达尔文','105.3','1883-5-6 13:11:11');";
        String sql = "insert into book(name,price,birth) values('海子诗集',79.8,'1996-4-8 8:30:5')";
        int n = st.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
        ResultSet rs = st.getGeneratedKeys();
        if(rs.next()){
            System.out.println("---------");
            int id = rs.getInt(1);
            System.out.println("插入之后获得自动增长ID:"+id);
        }
        con.close();

    }

通过PreparedStatement获得自动增长的主键

/**
     * 通过PreparedStatement获得自动增长的主键~ 插入的时候
     * PreparedStatement pst = con.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
     * pst.getGeneratedKeys();
     * @throws Exception
     */
    @Test
    public void getAuto2() throws Exception{
        Connection con  = ConnUtils.getConnection();
        String sql = "insert into book(name,price,birth) values(?,?,?)";
        PreparedStatement pst = con.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
        String name = "唐诗宋词300首";
        String price = "79.8";
        String date = "1996-4-8 8:30:5";
        pst.setString(1, name);
        pst.setString(2, price);
        pst.setString(3, date);
        int n = pst.executeUpdate();
        //***********
        ResultSet rs = pst.getGeneratedKeys();
        if(rs.next()){
            System.out.println("---------");
            int id = rs.getInt(1);
            System.out.println("插入之后获得自动增长ID:"+id);
        }
        con.close();

    }

jdbc执行批处理

方式一:

    /**
     * 学习用jdbc执行批处理 (把多条sql语句打包,一次性发给mysql数据库,让它执行。该方式能够减少客户端与MySQL服务器的通讯次数)
     * 先打包addBatch
     * 返回值为每一条sql语句影响的记录数的数组
     * @throws Exception
     */
    @Test
    public void batchDemo1() throws Exception{
        Connection con = ConnUtils.getConnection();
        Statement st = con.createStatement();
        String sql = "insert into book(name,price,birth) values('我的大学','18.5','2017-07-30 16:09:09')";
        for(int i=0;i<5;i++){
            // 打包到一起
            st.addBatch(sql);
        }
        sql = "update book set price=price*1.5 where price>100";
        st.addBatch(sql);
        int n[] = st.executeBatch();
        //n --- 1 1 1 1 1 7; 返回值为每一条sql语句影响的记录数
        for(int i=0;i<n.length;i++){
            System.out.println(n[i]);
        }
        con.close();
    }

方式二

/**
     * //           pst.addBatch(sql);---错误~  没有参数
     * @throws Exception
     */
    @Test
    public void batchDemo2() throws Exception{
        Connection con = ConnUtils.getConnection();
        String sql = "insert into book(name,price,birth) values(?,?,?)";
        PreparedStatement pst = con.prepareStatement(sql);
        for(int i=0;i<5;i++){
            pst.setString(1, "高等数学"+i);
            pst.setDouble(2, 35+i);
            pst.setString(3, "2017-07-30 16:09:09");

//          pst.addBatch(sql);---错误~  没有参数
            pst.addBatch();
        }
        sql = "update book set price=price*1.5 where price>100";
        pst.addBatch(sql);
        int n[] = pst.executeBatch();
        for(int i=0;i<n.length;i++){
            System.out.println(n[i]);
        }
        con.close();
    }
版权声明:本文为博主原创文章,大家一起学习进步。

java中的原子性操作

这里我主要讨论自增运算符(自减其实就是加-1,也是一种自增),那么自增运算是一种原子性的运算吗?先讨论操作对象是全局变量的情况 下面的代码创建了100个线程: mport java.util.co...
  • yuanzhou314
  • yuanzhou314
  • 2015年01月13日 11:50
  • 480

使用Java面向对象程序操作Oralce数据库实现界面增,删,改,查

使用Java面向对象程序操作Oralce数据库实现界面增,删,改,查
  • qq_19636353
  • qq_19636353
  • 2016年03月26日 19:30
  • 998

纯Java 实现控制台对数据库的增删改查(Eclipse)

.实验环境Eclipse Mysql数据库  新建数据库表 create database db_database01; use db_database01; create t...
  • tanrt
  • tanrt
  • 2016年09月07日 17:07
  • 1324

使用java对操作数据库的封装例子

最初自己写的代码经常出现游标超出最大值的问题,后参考几篇博文后改进了下,虽然仍不够完善,但是和最初相比已经有了很大的改善。代码如下: private SQLException exception = ...
  • subuser
  • subuser
  • 2011年04月24日 09:35
  • 663

用java实现对数据库的增删改查

首先引用mysql数据库的jar包文件:右键项目—构建路径—设置构建路径—库—添加外部JAR 我的数据库表及表结构: 代码如下: package test2; import java.sql...
  • ptsx0607
  • ptsx0607
  • 2017年03月14日 22:07
  • 354

学Java必看:Java最常用方法总结(ImportNew年度好文)

(ImportNew年度好文,代码实例,一看即懂,分享才能进步,让更多的人看到!) 实现:equals() hashCode() compareTo() clone() 应用:String...
  • zhangliangzi
  • zhangliangzi
  • 2016年04月04日 18:33
  • 3576

DBUtil 数据库工具类

创建properties格式文件在eclipse创建properties格式文件,新建信息:driverClass = com.mysql.jdbc.Driver url = jdbc:mysql:/...
  • qq_36238595
  • qq_36238595
  • 2017年07月09日 22:14
  • 154

java程序与数据库的连接(增删改查)

一个网络关系数据库应用系统是一个三层次结构。客户机与服务器采用网络连接,客户机端应用程序按通信协议与服务器端的数据库程序通信;数据库服务程序通过SQL命令与数据库管理系统通信。 数据库工程的建立: 1...
  • sxb956347789
  • sxb956347789
  • 2016年11月01日 22:35
  • 633

【ADO.net】 DataReader与DataAdapter辨析

当我们与数据源建立连接并定义了查询命令后,就要从数据源中检索数据了。不同的数据检索形式,自然适应不同的情况,其性能自然也是不同的,这篇文章主要来区分一下DataReader与DataAdapter两种...
  • u012331102
  • u012331102
  • 2015年08月13日 21:28
  • 487

数据库_jdbc_事务2_ThreadLocal

概述 /* mysql -uroot -proot set character_set_client=gb2312; set character_set_results=gb2312; use ...
  • u012576807
  • u012576807
  • 2013年12月30日 11:40
  • 1039
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java对数据库的调用一些常用方法总结
举报原因:
原因补充:

(最多只允许输入30个字)