/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package sdb.examples; import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.SQLException ; import org.apache.jena.atlas.logging.LogCtl ; import org.apache.jena.query.* ; import org.apache.jena.sdb.SDBException ; import org.apache.jena.sdb.Store ; import org.apache.jena.sdb.StoreDesc ; import org.apache.jena.sdb.shared.Access ; import org.apache.jena.sdb.sql.JDBC ; import org.apache.jena.sdb.sql.SDBConnection ; import org.apache.jena.sdb.store.DatabaseType ; import org.apache.jena.sdb.store.DatasetStore ; import org.apache.jena.sdb.store.LayoutType ; import org.apache.jena.sdb.store.StoreFactory ; /** Managed JDBC connections : creat */ public class ExJdbcConnection { static { LogCtl.setLog4j() ; } public static void main(String...argv) { String jdbcURL = String.format("jdbc:derby:%s", "DB/test2-hash") ; JDBC.loadDriverDerby() ; // Setup - make the JDBC connection and read the store description once. Connection jdbc = makeConnection(jdbcURL) ; //StoreDesc storeDesc = StoreDesc.read("sdb-store.ttl") ; // Make a store description without any connection information. StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash, DatabaseType.Derby) ; // Make some calls to the store, using the same JDBC connection and store description. System.out.println("Subjects: ") ; query("SELECT DISTINCT ?s { ?s ?p ?o }", storeDesc, jdbc) ; System.out.println("Predicates: ") ; query("SELECT DISTINCT ?p { ?s ?p ?o }", storeDesc, jdbc) ; System.out.println("Objects: ") ; query("SELECT DISTINCT ?o { ?s ?p ?o }", storeDesc, jdbc) ; } public static void query(String queryString, StoreDesc storeDesc, Connection jdbcConnection) { Query query = QueryFactory.create(queryString) ; SDBConnection conn = new SDBConnection(jdbcConnection) ; Store store = StoreFactory.create(storeDesc, conn) ; Dataset ds = DatasetStore.create(store) ; QueryExecution qe = QueryExecutionFactory.create(query, ds) ; try { ResultSet rs = qe.execSelect() ; ResultSetFormatter.out(rs) ; } finally { qe.close() ; } // Does not close the JDBC connection. // Do not call : store.getConnection().close() , which does close the underlying connection. store.close() ; } public static Connection makeConnection(String jdbcURL) { try { return DriverManager.getConnection(jdbcURL, Access.getUser(), Access.getPassword()) ; } catch (SQLException ex) { throw new SDBException("SQL Exception while connecting to database: "+jdbcURL+" : "+ex.getMessage()) ; } } }