首页 文章

在Android上通过JDBC将数据插入SAP HANA

提问于
浏览
1

我试图通过JDBC将Android手机中的数据插入SAP HANA实例(没有HCP,它是物理实例) . 我正在通过AndroidStudio开发Android应用程序 . 我是Android应用程序开发和SAP HANA的新手 .

我发现我需要以某种方式将ngdbc.jar驱动程序导入到我的项目中 . 我通过将.jar模块添加到我的项目中,将文件从我的HANA工作室导入到我的AndroidStudio项目中 .

当我尝试运行应用程序时,我收到以下错误消息:

08-20 15:34:17.306  21714-22168/com.iot.fb.sensor W/System.err﹕ java.lang.ClassNotFoundException: com.sap.db.jdbc.Driver
08-20 15:34:17.329  21714-22168/com.iot.fb.sensor W/System.err﹕ at java.lang.Class.classForName(Native Method)
08-20 15:34:17.329  21714-22168/com.iot.fb.sensor W/System.err﹕ at java.lang.Class.forName(Class.java:308)
08-20 15:34:17.329  21714-22168/com.iot.fb.sensor W/System.err﹕ at java.lang.Class.forName(Class.java:272)
08-20 15:34:17.329  21714-22168/com.iot.fb.sensor W/System.err﹕ at com.iot.fb.sensor.MainActivity.insert(MainActivity.java:84)
08-20 15:34:17.329  21714-22168/com.iot.fb.sensor W/System.err﹕ at com.iot.fb.sensor.MainActivity$1.run(MainActivity.java:68)
08-20 15:34:17.329  21714-22168/com.iot.fb.sensor W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
08-20 15:34:17.329  21714-22168/com.iot.fb.sensor W/System.err﹕ Caused by: java.lang.ClassNotFoundException: Didn't find class "com.sap.db.jdbc.Driver" on path: DexPathList[[zip file "/data/app/com.iot.fb.sensor-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
08-20 15:34:17.329  21714-22168/com.iot.fb.sensor W/System.err﹕ at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
08-20 15:34:17.330  21714-22168/com.iot.fb.sensor W/System.err﹕ at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-20 15:34:17.330  21714-22168/com.iot.fb.sensor W/System.err﹕ at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
08-20 15:34:17.330  21714-22168/com.iot.fb.sensor W/System.err﹕ ... 6 more
08-20 15:34:17.330  21714-22168/com.iot.fb.sensor W/System.err﹕ Suppressed: java.lang.ClassNotFoundException: com.sap.db.jdbc.Driver
08-20 15:34:17.330  21714-22168/com.iot.fb.sensor W/System.err﹕ at java.lang.Class.classForName(Native Method)
08-20 15:34:17.330  21714-22168/com.iot.fb.sensor W/System.err﹕ at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
08-20 15:34:17.330  21714-22168/com.iot.fb.sensor W/System.err﹕ at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
08-20 15:34:17.330  21714-22168/com.iot.fb.sensor W/System.err﹕ at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
08-20 15:34:17.330  21714-22168/com.iot.fb.sensor W/System.err﹕ ... 7 more
08-20 15:34:17.330  21714-22168/com.iot.fb.sensor W/System.err﹕ Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
08-20 15:34:30.762  21714-21727/com.iot.fb.sensor W/art﹕ Suspending all threads took: 21.900ms

我为 startConnect() 方法分配了一个按钮来创建一个运行 insert() 方法的线程 .

public void startConnect(View v) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                insert();
            }
        }).start();
    }

insert() 方法中,我正在加载驱动程序, Build 连接并插入我的数据:

protected void insert(){
        try{
            Class.forName("com.sap.db.jdbc.Driver");
            java.sql.Connection c = java.sql.DriverManager.getConnection("jdbc:sap://xxx.com:3xx15/HDB", "myUser", "myPassword");
            PreparedStatement st = c.prepareStatement("insert into \"MY_SCHEMA\".\"MY_TABLE\" values (?,?,?)");
            int time = (int) (System.currentTimeMillis());
            Timestamp tsTemp = new Timestamp(time);
            st.setTimestamp(1, tsTemp);//TIMESTAMP YYYY-MM-DD HH:SS.FF3
            st.setFloat(2, 33);//VALUE_A
            st.setInt(3, 99);//VALUE_B
            st.executeUpdate();
            st.close();
            c.close();


        }
        catch (java.lang.ClassNotFoundException | SQLException | java.lang.ExceptionInInitializerError  e){
            e.printStackTrace();
        }
    }

我想知道的是:

  • 如何修复驱动程序问题?

  • 除了驱动程序问题,我的代码是正确的端口,我的插入到架构和表格语法,以及以** HDB **结尾的URL(我偶然发现它)

先感谢您

1 回答

  • 0

    网址不正确,没有 . 请查看HANA JDBC docu以了解类似的问题 .

    错误消息

    Caused by: java.lang.ClassNotFoundException: Didn't find class  com.sap.db.jdbc.Driver" on path: DexPathList[[zip file "/data/app/com.iot.fb.sensor-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
    

    似乎表明在搜索JDBC驱动程序类时甚至没有看到JDBC驱动程序.jar . 您确定已正确导入并将其包含在类路径中吗?

相关问题