LoginSignup
0
2

More than 1 year has passed since last update.

AccessDB(*.accdb)のテーブル一覧をkotlin, javaで取得

Last updated at Posted at 2022-06-22

UCanAccessを使いましょ

build.gradle.kts
implementation("net.sf.ucanaccess:ucanaccess:5.0.1")

テーブル一覧を取得

コツっていうんですかね、接続URLに;sysSchema=trueが必要です。
そんだけです。kotlinとJavaと両方のコードを載せておきます。

acc.kt
import java.sql.DriverManager

fun main() {
    val accdb = "c:/hoge.accdb"
    DriverManager.getConnection("jdbc:ucanaccess://$accdb;sysSchema=true").use { conn ->
        conn.createStatement().use { st ->
            st.executeQuery("SELECT * FROM sys.MSysObjects").use { rs ->
                while (rs.next()) {
                    println(rs.getString("Name"))
                }
            }
        }
    }
}
acc.java
import java.sql.*;

public class AccDbJ {
    public static void main(String...args) {
        String accdb = "c:/hoge.accdb";
        try(Connection conn = DriverManager.getConnection("jdbc:ucanaccess://" + accdb + ";sysSchema=true");
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery("SELECT * FROM sys.MSysObjects")) {
            while (rs.next()) {
                System.out.println(rs.getString("Name"));
            }
        }
        catch(SQLException e) {
            e.printStackTrace();
        }
    }
}

以上でござる

もしかしたら以下のキーワードで飛んでくる人もいるかも知れないんで書いておきましょ。

UCAExc:::5.0.1 user lacks privilege or object not found: MSYSOBJECTS

要するに;sysSchema=trueで権限(privilegeだから特権?)を与えりゃいいって話ですね。
そんな感じです。

いや最近accdbとかいう拡張子初めて見たんで自分の世界に寄せました、というお話。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2