• JDBC学习笔记(SQL语句的执行)


    在获得数据库连接后,紧接着就是执行SQL语句。这里用到俩个类:StatementPreparedStatement

    一、Statment

    Statement提供了以下方法用来执行SQL语句:

     * executeQuery(String sql):执行一条SQL查询语句,返回查询结果对象(ResultSet)
     * executeUpdate(String sql):执行一条SQL更新,插入,删除操作语句。

     * execute(String sql):执行一条SQL语句

     *close():关闭Statement。和Connection一样,Statement使用后也需要关闭。

    *注意:Statement通过connection的createStatement方法获得。

    以下为执行SQL语句示例:

        Statement statement=connection.createStatement();
        String sql="insert into table_01 values('呵呵',1,'男'),('哈哈',2,'女'),('嘿嘿',3,'男')";
        statement.executeUpdate(sql);
        sql="delete from table_01 where id=3";
        statement.executeUpdate(sql);
        sql="update table_01 set id=3,name='hh' where id=2";
        statement.executeUpdate(sql);
    
        //使用后一定要关闭
        connection.close();
        statement.close();

    二、PreparedStatement

    ProparedStatement:是Statement的子接口,同样用来执行SQL语句,比Statement书写方便
     ProparedStatement的优点:
     * 1、书写方便,先写好SQL语句再设置参数。如:INSERT INTO table VALUES(?,?,?...),不用拼写SQL语句

     * 2、防止SQL注入(这点很重要)

     * 注意:在开始就赋入sql语句(此时的sql语句可以设置未知参数,通过?设置),后通过SetObject(int index,Object obj)设置sql语句里的参数,索引从1开始

    PreparedStatement提供了三个方法:

            setXxx():设置SQL语句里的参数,Xxx为参数的类型

            executeUpdate():参数设置完毕后,执行插入、删除、更新的sql语句。

            executeQuery():参数设置完毕后,执行查询的sql语句,返回结果对象(ResultSet)

           

    以下为使用示例:

        String sql="insert into table_01 values(?,?,?)";
        PreparedStatement preparedstatement=connection.prepareStatement(sql); //需要提前设置好SQL语句
        //设置SQL里的参数(索引从1开始)
        preparedstatement.setString(1,"张天笑");
        preparedstatement.setInt(2,2);
        preparedstatement.setString(3,"女");
        //直接executeUpdate()方法,不用传入SQL语句
    
        preparedstatement.executeUpdate();

    不要求掌握知识:即在插入时获得主键

    //获得主键
    String sql="INSERT INTO table_01(name,sex) VALUES(?,?)";
    Connection connection=JDBCTools.getConnection();
    //设置好PreparedStatement是返回主键类型
    
    PreparedStatement preparedstatement=
    
                    connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
    
    preparedstatement.setObject(1,"王富贵");
    preparedstatement.setObject(2, "男");
    preparedstatement.executeUpdate();
    
    ResultSet resultset=preparedstatement.getGeneratedKeys();
    ResultSetMetaData resultsetmetadata=resultset.getMetaData();
    System.out.println(resultsetmetadata.getColumnName(1));
    while(resultset.next()) {
    System.out.println(resultset.getObject(1));
    }
    JDBCTools.release(connection, preparedstatement,resultset);
  • 相关阅读:
    降维-基于RDD的API
    GraphX编程指南
    GPU自动调度卷积层
    TVM部署预定义模型
    做个普通人,就挺好的
    Spring 的 @Primary 注解
    微信公众平台消息接口开发(30)大众点评商户信息团购及优惠券查询
    大众点评API获取某坐标周边酒店信息
    Sharding-jdbc 读写分离(三)- springboot+mybatis+Hikari
    Sharding-jdbc 分库分表专题内容(二)springboot+mybatis+Hikari
  • 原文地址:https://www.cnblogs.com/MrQlyn/p/10236349.html
Copyright © 2020-2023  润新知