使用statement.executeQuery()执行两个不同的查询后使用ResultSet

时间:2015-06-10 20:11:31

标签: java jdbc resultset

鉴于以下代码:

    //connection stuff
    ResultSet rs = statement.executeQuery(query1);

    statement.executeQuery(query2);

    while(rs.next){
       //code
    }

即使已经执行了第二个语句,结果集rs仍然有效吗?

我知道当你关闭一个语句时,结果集不再有效,但这里的代码只是执行另一个查询而不是将它存储在结果集中。

1 个答案:

答案 0 :(得分:1)

statement假设StatementexecuteQuery

  

默认情况下,每个Statement对象只能同时打开一个ResultSet对象。因此,如果读取一个ResultSet对象与另一个ResultSet对象的读取交错,则每个ResultSet对象必须由不同的Statement对象生成。如果存在一个开放的对象,则Statement接口中的所有执行方法都会隐式关闭该语句的当前ResultSet对象。

发布的代码不安全 - 第二次调用ResultSet会返回一个新的rs,并且只有一个可以一次打开os.environ['STANFORD_PARSER'] = os.path.join( os.path.expanduser('~'), 'stanford-parser/stanford-parser.jar') os.environ['STANFORD_MODELS'] = os.path.join( os.path.expanduser('~'), 'stanford-parser/stanford-parser-3.5.2-models.jar') parser = nltk.parse.stanford.StanfordParser( model_path="edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz") parsed = parser.parse(sentence_which_differs_from_time_to_time) 无效。