Understand that, thank you for the follow up.
I was going to open the local session and keep it open for the lifetime of the webapp like I would do with a JDBC session object. That would not allow me to use the autoclose. Is it possible or recommended to keep the one session object like that?
Thanks again.
--
Aaron
On March 11, 2017 11:07:31 AM EST, "Christian Grün"
christian.gruen@gmail.com wrote:
>Dear Aaron (and thanks Kendall),
>
>A little addendum: If you use Java’s try-with-resources statement…
>
> try (LocalSession session = new LocalSession(this.context))
>
>…there will be no need to manually close your connection.
>
>Best,
>Christian
>
>
>
>On Fri, Mar 10, 2017 at 10:47 PM, AJ Weber
aweber@comcast.net wrote:
>> OK, changing this so that the code flows like yours works much, much
>better.
>> I now return all 3 documents I expect are in the database.
>>
>> FOLLOW-UP Question: How do I close the database properly with these
>> classes? I had been doing a context.closeDB() when shutting-down.
>Do I
>> just do a localSession.close() now? Or do I need to do both?
>>
>> Thanks again!!!
>>
>>
>>
>> On 3/10/2017 4:27 PM, AJ Weber wrote:
>>
>> Well, one difference I spot is that I am opening (via the snippet I
>sent
>> before) the database BEFORE creating a LocalSession and I am using
>the new
>> Check(...).execute(context);
>>
>> The "context" is kept in the object's class-level.
>>
>> Your code creates the context, associates the new LocalSession with
>the
>> context, and THEN opens the existing database. (That's more akin to
>how a
>> JDBC session would go...but I did not see any java examples with
>this, I
>> followed the examples on the java page and only found LocalSession
>via a
>> google search.)
>>
>> There doesn't appear to be any details in the javadoc or anything I
>can find
>> regarding how to use LocalSession, so I could be off base from that
>pov.
>>
>> -AJ
>>
>>
>> On 3/10/2017 4:18 PM, Kendall Shaw wrote:
>>
>> This worked for me, where “test-local” contains a document:
>>
>>
>>
>> Context context = new Context();
>>
>> LocalSession s = new LocalSession(context);
>>
>> s.execute(new Check("test-local"));
>>
>> try (Query q = s.query("for $doc in collection() return
>$doc")) {
>>
>> while (q.more()) {
>>
>> System.out.println(q.next());
>>
>> }
>>
>> }
>>
>>
>>
>> But, why your code isn’t working could be useful to know. It seems
>like
>> there are some details left out.
>>
>>
>>
>> Kendall
>>
>>
>>
>> From:
basex-talk-bounces@mailman.uni-konstanz.de on behalf of AJ
>Weber
>>
aweber@comcast.net
>> Date: Friday, March 10, 2017 at 11:40 AM
>> To: "basex-talk@mailman.uni-konstanz.de"
>>
basex-talk@mailman.uni-konstanz.de
>> Subject: Re: [basex-talk] Simple query
>>
>>
>>
>>
>>
>> On 3/10/2017 2:24 PM, Kendall Shaw wrote:
>>
>> Michael Seiferle gave the answer already, I think. What would
>collection()
>> be referring to? How would BaseX know what to return? Probably there
>is no
>> database specified. Presumably, in the GUI you have opened a
>database.
>>
>> Yes, I did not include my code to open the database. There is a
>database
>> open and this does not throw an exception, it just returns no
>results.
>>
>> In my constructor of this class there is the following code:
>> new Check(this.MyID).execute(context);
>>
>> (MyID is a String identifying the database I want to work with
>exclusively
>> with this context passed.)
>>
>> As I mentioned in a separate post, my query where matches(uri...)
>works
>> fine...every time. That query also does not have a specific
>collection in
>> the query.
>>
>>
>>
>>
>> Kendall
>>
>>
>>
>>
>>
>> From:
basex-talk-bounces@mailman.uni-konstanz.de on behalf of AJ
>Weber
>>
aweber@comcast.net
>> Date: Friday, March 10, 2017 at 6:44 AM
>> To: Fabrice ETANCHAUD
fetanchaud@groupefbo.com,
>> "basex-talk@mailman.uni-konstanz.de"
>
basex-talk@mailman.uni-konstanz.de
>> Subject: Re: [basex-talk] Simple query
>>
>>
>>
>> On 3/9/2017 3:46 AM, Fabrice ETANCHAUD wrote:
>>
>> Hello Aaron,
>>
>>
>>
>> You would learn faster by using the BaseXGUI application,
>>
>> You will benefit from syntax highlighting, real time execution, and
>hits on
>> function signatures.
>>
>> I am trying the GUI now. It is an excellent tool!
>>
>> However, issuing the same exact XQuery in the GUI returns 3 documents
>(which
>> is what I would have originally expected).
>>
>> Maybe it is an issue with how I setup my query in java? Here is my
>code:
>>
>> try (LocalSession session = new LocalSession(this.context)) {
>> //test
>>
>> try (Query q = session.query("for $doc in collection()
>return
>> $doc")) {
>> while (q.more()) {
>> LOG.debug("RESULT: " + q.next());
>> }
>> }
>> }
>> catch (Exception e) {
>> LOG.error("Could not execute query " + statement, e);
>> }
>>
>>
>>
>>
>>
>> Best regards,
>>
>> Fabrice
>>
>>
>>
>> De : basex-talk-bounces@mailman.uni-konstanz.de
>> [mailto:basex-talk-bounces@mailman.uni-konstanz.de] De la part de
>Aaron
>> Weber
>> Envoyé : jeudi 9 mars 2017 00:31
>> À : basex-talk@mailman.uni-konstanz.de
>> Objet : [basex-talk] Simple query
>>
>>
>>
>> Newbie alert.
>>
>> I'm trying to get my feet wet with BaseX, and in doing so, am trying
>to
>> understand XQuery and how to apply it to a database full of documents
>(not
>> just a single document that is typically queried).
>>
>> I am using Java and can post my code, but with a LocalSession, and a
>query,
>> the following produces 0 results.
>>
>> For $doc in collection() return $doc
>>
>> I realize there's no "where", and in the sql world that would match
>all.
>> Maybe not in XQuery?
>>
>> Obviously just a test query, but I need to start somewhere. :-)
>>
>> Thanks for any help!
>> --
>> AJ
>>
>>
>>
>>
>>
>>
>>
>>