2016-07-27 2 views
2

intellijのsqlite-databasesでspatialite関数を実行できるかどうかは誰にも分かりますか? spatialite関数のリファレンス:http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.2.0.htmlIntellijでSqlite:Spatialite関数を実行する

特に、Point型の関数を使用することに興味があります。

ありがとうございます!

編集:関数は公式のspatialite-guiで動作しますが、プログラムでspatialite-guiを使用する方法はないと思いますか?ここで

は、私がこれまで試したものです:IntelliJので、私は、JavaのJDBCライブラリを接続していない成功を収めて関数ST_X(ポイント)とST_Y(ポイント)を使用してみました:

 Connection c = null; 
     Class.forName("org.sqlite.JDBC"); 
     c = DriverManager.getConnection("jdbc:sqlite:" + path + databaseName); 
     c.setAutoCommit(false); 
     System.out.println("Opened database \"" + databaseName + "\" successfully"); 

     String sql = "SELECT id, ST_Y(point), ST_X(point) from tablename;"; 

     Statement stmt = c.createStatement(); 
     ResultSet rs = stmt.executeQuery(sql); 
     while (rs.next()) { 
      String msg = "Id: "; 
      msg += rs.getInt(1); 
      msg += " , Latitude: "; 
      msg += rs.getDouble(2); 
      msg += " , Longitude: "; 
      msg += rs.getDouble(3); 
      System.out.println(msg); 
     } 
     rs.close(); 
     stmt.close(); 
     c.close(); 

これは、次の例外がスローされます。

Exception in thread "main" java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (no such function: ST_Y) 
    at org.sqlite.core.DB.newSQLException(DB.java:890) 
    at org.sqlite.core.DB.newSQLException(DB.java:901) 
    at org.sqlite.core.DB.throwex(DB.java:868) 
    at org.sqlite.core.NativeDB.prepare(Native Method) 
    at org.sqlite.core.DB.prepare(DB.java:211) 
    at org.sqlite.jdbc3.JDBC3Statement.executeQuery(JDBC3Statement.java:81) 
    at com.company.Test.main(Test.java:77) 

編集2: 私は迷子になりました。それが機能するように拡張機能を読み込む必要があるようです。これはJDBCコネクターには含まれていませんか? (私はMavenを通してJDBCコネクターを引っ張った。) 正しい拡張はどこにありますか? それはそれらのものですか? https://www.gaia-gis.it/fossil/libspatialite/index それとも? http://www.gaia-gis.it/gaia-sins/index.html どうすれば使用できますか?誰もこれの前にこれをしましたか? Dynamically loading SpatiaLite as an extension module:あなたはあなたがここにドキュメントを見つけることができます

SELECT load_extension('mod_spatialite'); 

をやっspatialiteモジュールをロードする必要があり、空間クエリを実行する前に

+0

ちょっと試してみましたか? – Fildor

+0

これらのデータベース機能はありますか?他の機能と同じようにあなたを呼び止めるのは何ですか? –

+0

IDEにはこれと何が関係していますか? –

答えて

0

ロードするモジュールは、システムパス(documentation)にあり、パスセパレータは/である必要があります。また、spatialiteモジュールとJavaはcompatibles(32ビットまたは64ビット)でなければならないことも考慮してください。

+0

ありがとう、それは働いた! – user3116232

関連する問題