• JDBC中执行SQL语句的方式


    一.执行DDL、DML语句

    DDL、DML分别表示数据库定义语言、数据库操纵语言,操控这两种语言应该使用Statement对象的executeUpdate方法。

    代码如下:

    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");//加载驱动
            //获得一个物理会话
        Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false","root","4399");
            //得到一个Statement对象
        Statement stat=conn.createStatement();
        String DDL_sql="create table if not exists tab(tab_id varchar(10) primary key,tab_name varchar(20))";
        String DML_sql="insert into tab values('T0002','狗王')";
        System.out.println(stat.executeUpdate(DDL_sql));//输出执行DDL语句的返回值
        System.out.println(stat.executeUpdate(DML_sql));//输出执行DML语句的返回值
        }

    结果如下:对于DDL语句返回的是0,对于DML语句返回的是受影响的行数。

    二.执行DQL语句

     对于查询语句应该使用Statement对象的executeQuery方法代码如下:

         Class.forName("com.mysql.jdbc.Driver");
            Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false","root","4399");
            Statement stat =conn.createStatement();
            String DQL_sql="select * from tab";
            ResultSet rs=stat.executeQuery(DQL_sql);

     得到的是一个ResultSet的结果集。

    三.使用PreparedStatement执行SQL语句

    一个预处理的Statement对象。代码如下:

    package StudyJDBC;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    
    
    /**
     * @ClassName PreparedStatementText
     * @Author 真正的小明被占用了
     * @Date 2018/10/21/021 11:15
     * @Version 1.0
     */
    public class PreparedStatementText {
    
        public static void main(String[] args) throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false","root","4399");
            //创建一个PreparedStatement对象
            PreparedStatement perpare=conn.prepareStatement("insert into tab values (?,?)");//对象在创建之初就有了预编译
            perpare.setString(1,"T00003");//设置第一个占位符的类型和值
            perpare.setString(2,"李武");//设置第二个
            perpare.executeUpdate();//执行的还是DML语句所以使用executeUpdate方法
        }
    }

    四.查询结果管理集

    package StudyJDBC;
    
    import java.sql.*;
    import java.util.ArrayList;
    
    /**
     * @ClassName ReasultSetText
     * @Author 真正的小明被占用了
     * @Date 2018/10/21/021 13:48
     * @Version 1.0
     */
    public class ReasultSetText {
    
        public static void main(String[] args) throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false","root","4399");
            Statement stat=conn.createStatement();
            //创建一个结果集接受查询结果
            ResultSet rs=stat.executeQuery("select * from tab");
            //现在rs结果集有三行三列,
            rs.next();//第一行
            System.out.println(rs.getString("tab_id"));
            rs.absolute(2);//跳转到第二行
            System.out.println(rs.getString("tab_id"));
            rs.first();//直接回到第一行
            System.out.println(rs.getString("tab_id"));
            rs.close();
        }
    }
  • 相关阅读:
    WHYZOJ-#53 线段树区间修改(线段树)
    洛谷-3373 【模板】线段树 2 (线段树)
    暑假训练-藏妹子之处(递推)
    POJ-1258 Agri-Net(kruskal最小生成树)
    POJ-2559 Largest Rectangle in a Histogram(单调栈)
    BZOJ3439 Kpm的MC密码
    BZOJ3438 小M的作物
    BZOJ3436 小K的农场
    BZOJ3437 小P的牧场
    BZOJ1430 小猴打架
  • 原文地址:https://www.cnblogs.com/SAM-CJM/p/9824392.html
Copyright © 2020-2023  润新知