1
我試圖通過JDBC將數據從Android手機插入到SAP HANA實例(沒有HCP,它是物理的)。我正在通過AndroidStudio開發Android應用程序。我對Android應用程序開發和SAP HANA完全陌生。在Android上通過JDBC插入數據到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()
方法,我在加載驅動程序,建立連接並插入我的數據:
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();
}
}
我想知道的是:
- 我怎樣才能解決司機的問題?
- 除了驅動程序問題,我的代碼是否正確關於** port **,my ** insert **到模式和表格語法中,並且以** HDB **結尾的URL(我偶然發現它)
預先感謝您
謝謝拉爾斯的回覆。我不確定我是否正確導入了驅動程序。我嘗試了兩件事。我首先將ngdbc.jar添加到項目的libs文件夾中,並單擊「添加到庫」。這並沒有解決問題。然後,我將ngdbc.jar作爲一個.jar模塊導入。我還檢查了模塊設置 - >模塊「應用程序」 - >依賴項下是否存在該模塊的依賴關係。我確實存在。這是我對「2.將ngdbc.jar添加到你的類路徑」的理解。也許我錯了。我如何正確地將這個ngdbc.jar添加到我的類路徑中? – Incanus
對不起,沒有關於Android開發的想法。我甚至不知道JDK是否完全符合標準。也許API的某些部分尚未被移植? - 對不起,這都是猜測! –
我不確定有關android的問題,但我也在我的web應用程序中遇到了這個問題,當我添加一個jar時,我必須將JAR安裝到我的本地Maven存儲庫中並工作。是否有類似於android的此類內容? –