Java JDBC中的PreparedStatement

Java JDBC中的PreparedStatement,java,database,memory,jdbc,prepared-statement,Java,Database,Memory,Jdbc,Prepared Statement,当我们创建PreparedStatement的对象并执行这样的查询时 PreparedStatement stmt=con.prepareStatement("select * from emp"); ResultSet rs=stmt.executeQuery(); 如何重新编译语句和预编译PreparedStatement 当使用PreparedStatement对象从存储内存位置数据的数据库中提取数据时?这取决于JDBC引擎。例如,用于MySQL的JDBC引擎通常不会实际创建服务器

当我们创建PreparedStatement的对象并执行这样的查询时

PreparedStatement stmt=con.prepareStatement("select * from emp");  
ResultSet rs=stmt.executeQuery(); 
如何重新编译语句和预编译PreparedStatement


当使用PreparedStatement对象从存储内存位置数据的数据库中提取数据时?

这取决于JDBC引擎。例如,用于MySQL的JDBC引擎通常不会实际创建服务器端准备的语句(请参阅和)。在这些情况下,
PreparedStatement
接口仅提供查询和参数之间的分离,以清晰和防止注入攻击;每次执行
PreparedStatement
,它都会发送一个完整格式的SQL查询,然后MySQL服务器将解析、优化并执行该查询。另一方面,一些系统(包括具有正确选项的MySQL——请参见第二个链接)将使用“真正”的预处理语句,这意味着它只会被解析和优化一次


但实际上,这就像询问
java.util.List
的内存特性一样——这完全取决于实现,因此不能对接口做出有意义的回答。

在JDBC中,始终会发生三件事:

  1)Query creation.

  2)Query compilation.

  3)Query Execution.
在PreparedStatement的情况下,缓存进入图片,因此前两个步骤不需要再次执行。
因此,在PreparedStatement与语句相反的情况下,只执行最后一步。

您的问题一点也不清楚。Java无法访问内存位置。听起来你需要做更多的研究。我建议学习Java教程,还有一些谷歌搜索。访问这个。RB我想这会很有帮助…@BasilBourque当数据被提取时,我想它也会被存储在某个地方。那么内存存储呢。检查这个。如果你觉得合适的话,请接受答案:)这是我在这里发布的先生给出的解释:)请注意,根据您的数据库,上述情况可能不正确。:)具体来说,查询可以在每次调用
execute
时编译,而不是一次。