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 <awe...@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-boun...@mailman.uni-konstanz.de> on behalf of AJ Weber
> <awe...@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-boun...@mailman.uni-konstanz.de> on behalf of AJ Weber
> <awe...@comcast.net>
> Date: Friday, March 10, 2017 at 6:44 AM
> To: Fabrice ETANCHAUD <fetanch...@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-boun...@mailman.uni-konstanz.de
> [mailto:basex-talk-boun...@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
>
>
>
>
>
>
>
>

Reply via email to