Java 在哪里可以找到负责HyperSQL引擎级SQL查询执行的代码?
我找到了下一个git回购。我正在检查数据库的使用情况 例如,我想创建与DB的连接,并执行一些语句:Java 在哪里可以找到负责HyperSQL引擎级SQL查询执行的代码?,java,jdbc,hsqldb,Java,Jdbc,Hsqldb,我找到了下一个git回购。我正在检查数据库的使用情况 例如,我想创建与DB的连接,并执行一些语句: Connection connection = ... Statement statement = connection.createStatement(); String query = "CREATE TABLE mytable (id IDENTITY , value VARCHAR)"; statement.executeUpdate(query); 如我所见,下一个
Connection connection = ...
Statement statement = connection.createStatement();
String query = "CREATE TABLE mytable (id IDENTITY , value VARCHAR)";
statement.executeUpdate(query);
如我所见,下一个内部JDBC驱动程序类调用序列将发生:
JDBCDriver -> JDBCConnection -> JDBCStatement -> Session -> Result (?) -> ? -> HSQLDB
用于:
以及
下一步-调用
但是我在哪里可以找到负责通过DBMS引擎执行SQL语句的代码呢?HSQLDB源代码位于SourceForge.net上托管的Subversion(非Git)存储库中:
如果您遵循Session.execute(Result…)方法,并找到EXECDIRECT的情况,您将看到该语句首先被编译,然后被执行。您可以从这里开始,其中包括大量负责编译和执行不同类型SQL语句的类。但为什么首先是executeDirectStatement,然后再次为相同的结果执行performPostExecute?performPostExecute涵盖了除实际查询之外需要完成的任何工作。SQL执行不仅仅是创建结果,还必须处理事务、资源和其他事情。
public synchronized ResultSet executeQuery(
String sql) throws SQLException {
fetchResult(sql, StatementTypes.RETURN_RESULT,
JDBCStatementBase.NO_GENERATED_KEYS, null, null);
return getResultSet();
}
private void fetchResult(String sql, int statementRetType,
int generatedKeys, int[] generatedIndexes,
String[] generatedNames) throws SQLException {
...
resultIn = connection.sessionProxy.execute(resultOut);
...
}