Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据给定条件,报表和编制报表之间的差异_Java_Jdbc - Fatal编程技术网

Java 根据给定条件,报表和编制报表之间的差异

Java 根据给定条件,报表和编制报表之间的差异,java,jdbc,Java,Jdbc,大多数关系数据库通过四个步骤处理JDBC/SQL查询: 解析传入的SQL查询 编译SQL查询 规划/优化数据采集路径 执行优化的查询/获取和返回数据 有人能用下面的代码给我解释一下这些步骤吗 Statement st=con.createStatement(); ResultSet rset=st.executeQuerry("Select * from tab"); PrepareStatement stm=con.preparedStatement("select * from tab")

大多数关系数据库通过四个步骤处理JDBC/SQL查询:

  • 解析传入的SQL查询
  • 编译SQL查询
  • 规划/优化数据采集路径
  • 执行优化的查询/获取和返回数据
  • 有人能用下面的代码给我解释一下这些步骤吗

    Statement st=con.createStatement();
    ResultSet rset=st.executeQuerry("Select * from tab");
    
    PrepareStatement stm=con.preparedStatement("select * from tab");
    ResulSet rset=stm.executeQuerry();
    

    与上述内容有什么区别?

    PrepareStatement
    是预编译的,因此速度更快。当您在select语句中具有where条件时,会出现显著的差异,其中
    语句
    sql查询受sql注入的约束,而使用
    PrepareStatement
    则不受sql注入的影响

    当您有DML语句,如
    INSERT
    UPDATE
    DELETE
    等时,同样适用


    您可以找到更多详细信息

    准备好的语句
    查询是在数据库上预编译的,访问计划将被重用以执行进一步的查询,这使它们能够比
    语句
    对象生成的普通查询执行得快得多


    PreparedStatement
    还允许您编写动态和参数查询。使用参数查询和
    PreparedStatement
    可以防止多种形式的SQL注入,因为作为占位符一部分传递的所有参数都将由JDBC驱动程序自动转义

    在多次调用方面,差异将是可见的,因为
    PreparedStatements
    以预编译格式存储,如果驱动程序支持预编译,则
    con.preparedStatement(“从选项卡中选择*)将把语句发送到数据库进行预编译。你可以在这里看到不同:“acc”是什么意思?