gpt4 book ai didi

jdbc - 在 jvm 或 db 中预编译的预处理语句在哪里?

转载 作者:行者123 更新时间:2023-12-01 02:27:35 25 4
gpt4 key购买 nike

当阅读不同的帖子时,脑海中浮现出一个问题,准备好的语句在哪里预编译,在 jvm 中还是在 db 中?该过程何时实际发生在 java 类中。下面的例子:=

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


public class PreparedStmtDemo {

public static void main(String args[]) throws SQLException,Exception {

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","tiger");
PreparedStatement preStatement = conn.prepareStatement("select RollNo from student where Stream =?");
preStatement.setString(1, "Commerce");

ResultSet result = preStatement.executeQuery();

while(result.next()){
System.out.println("Roll No: " + result.getString("RollNo"));
}
}

}

最佳答案

JDBC 驱动程序将 PreparedStatement 预编译为 SQL 语句,该语句涉及将参数从 Java 数据类型映射到 SQL 数据类型。

然后将预编译语句汇集到 Oracle 数据库中。

PreparedStatement 与普通 Statement 相比具有以下优点:

  • 防止 SQL 注入(inject)攻击
  • 如果你在java中使用其他参数重用PreparedStatement实例,JDBC驱动不需要再次预编译它
  • Oracle 数据库可以重用池化 SQL 语句

  • 但是,如果您不使用查询参数,则 Statement 和 PreparedStatement 的行为方式相同。

    关于jdbc - 在 jvm 或 db 中预编译的预处理语句在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15144893/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com