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