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