首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDBC PreparedStatement.executeQuery()的细节

JDBC PreparedStatement.executeQuery()的细节
EN

Stack Overflow用户
提问于 2021-06-13 20:55:04
回答 1查看 34关注 0票数 0

当我们使用PreparedStatement (这里描述的http://tutorials.jenkov.com/jdbc/preparedstatement.html)执行SQL查询时,如果我们使用SQL Server或Postgres这样的数据库,那么executeQuery()方法到底做了什么?它是直接将SQL查询转换为一组数据库操作,还是对数据库服务器进行网络调用,从而将SQL查询转换为数据库操作?这更一般地是一个关于SQL Server等数据库如何工作的问题。我只是想知道它们是否运行在与调用executeQuery()的服务器不同的服务器上。

EN

回答 1

Stack Overflow用户

发布于 2021-06-13 23:09:54

每个数据库系统的实现细节各不相同,但一般情况下,使用RDBMSes作为其本机查询语言的JDBC驱动程序的工作方式如下:

  1. 执行Connection.prepareStatement(...)时,查询将发送到数据库服务器进行编译
  2. On PreparedStatement.executeQuery(),驱动程序发送execute命令以及收集的参数值,数据库服务器将执行先前使用这些参数值编译的语句。

换句话说,驱动程序不关心数据库服务器上的低级操作,而只是向数据库服务器发送“编译”和“带参数执行”命令,数据库服务器负责低级操作。

需要说明的是,并不是所有的司机都是这样工作的。例如,server /J缺省情况下在本地‘编译’语句(确定参数的数量),在执行时,它会将参数值(通过适当的转义)内联到语句中,然后发送一个带有文字值的MySQL字符串,而不是在数据库服务器上执行的参数。但是,在这种情况下,数据库服务器仍然负责确定和执行必要的低级操作。

另一方面,某些NoSQL数据库(或其他类型的数据存储)的驱动程序完全有可能将SQL查询转换为对该数据存储的低级操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67958509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档