Java 试图运行ALTERSESSION命令通过JDBC设置会话变量

Java 试图运行ALTERSESSION命令通过JDBC设置会话变量,java,oracle,session,jdbc,Java,Oracle,Session,Jdbc,我试图通过JDBC运行alter system命令,这是以最佳方式运行查询所必需的 我不确定我是否做对了,因为我看不到alter session语句的效果。我们如何在JDBC中保持相同的会话我的意思是,如果我使用相同的连接而不关闭它,这是否意味着我正在使用相同的会话? connection和database类只是获取连接的助手类 MyConnection mainDatabaseConnection = new MyConnection("jdbc:oracle:thin:@aas:111:"+

我试图通过JDBC运行alter system命令,这是以最佳方式运行查询所必需的

我不确定我是否做对了,因为我看不到alter session语句的效果。我们如何在JDBC中保持相同的会话我的意思是,如果我使用相同的连接而不关闭它,这是否意味着我正在使用相同的会话? connection和database类只是获取连接的助手类

MyConnection mainDatabaseConnection = new MyConnection("jdbc:oracle:thin:@aas:111:"+tm.databaseName, "sys as sysdba", "xxx");
        Database mainDatabase = new Database(mainDatabaseConnection.getConnection());

        /* Fill in with data got for the main database */
        //String auditQuery = mainDatabase.generateAuditQuery(tm.schemaName, tm.tableName);
        String auditQuery = "select id, name, school, start, end from user where start>'11-11-11' and start<'12-12-12'";
        System.out.println(auditQuery);
        ResultSet rs = mainDatabase.runQuery("ALTER SESSION set optimizer_use_invisible_indexes = true");
//        ResultSetMetaData md = rs.getMetaData();
//        System.out.println(md.getColumnCount());
        rs.close();
    mainDatabase.close();
    mainDatabaseConnection.close();
我不确定alter session命令是否成功运行

问题2:当我使用语句运行Select查询时,我会得到一个结果集。当我关闭语句时,结果集也会关闭吗?因此,一旦我关闭station或connection,所有获取的数据都会消失吗?

java.sql.connection对象表示Oracle中的会话。只要您继续使用相同的对象,您就处于相同的会话中


关于结束语句,正如Mark Rotteveel所评论的,结束一条语句实际上会关闭它打开的结果集。但是,建议您在使用完RestulSet后关闭它,甚至实际上是关闭它-特别是如果您打算重用语句对象。

那么Alter session语句呢。我应该为它使用statment.executeUpdate方法吗?我如何确保该会话顺利进行?谢谢你的及时回复@Mureinik@ramu这不是一个查询,所以是的,您肯定应该使用executeUpdate。Wrt我如何确保会议顺利进行我不明白你在问什么。请澄清一下好吗?JDBC规范确实要求关闭语句会关闭结果集。记录此注释:关闭语句对象时,其当前ResultSet对象(如果存在)也将关闭。JDBC 4.2的第13.1.4节中也记录了关闭语句对象将关闭并使该语句对象生成的任何ResultSet实例无效。1。我的意思是,如何检查executeUpdate是否正常,是否设置了会话变量?2.因此,如果我想对结果集进行一些计算,我不应该右键关闭语句或连接。@ramu 1。如果executeUpdate调用失败,它将抛出SQLException。如果没有,它就成功了。2.是的。请限制你自己每个问题只能问一个问题。好的。从现在起我会这么做的。