我试图通过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 回答
网址不正确,没有 . 请查看HANA JDBC docu以了解类似的问题 .
错误消息
似乎表明在搜索JDBC驱动程序类时甚至没有看到JDBC驱动程序.jar . 您确定已正确导入并将其包含在类路径中吗?