I need to open, read and insert items into an online SQLite database from an Android app.
I know url, username and password. In JavaSE i would do the following:Class.forName("com.mysql.jdbc.Driver");
Connection dbConnection = DriverManager.getConnection(URL, USER, PASSWORD);
I read that I can't do this in Android be开发者_如何学编程cause there is not a JDBC Driver (there is a "SQLite.JDBCDriver"
but it is not documented and not recommended).
You should expose your datasource like this via an intermediary such as a Web Service for at least the following reasons:
- someone has direct access to your datasource and can read, manipulate or destroy the data
- abstraction; you can control the way in which the data is sent and how it's represented. Should the database tables/objects change, you'd only have to change the web service instead of force an update (in some cases)
- JSON interaction is very well supported on Android out of the box, whereas JDBC isn't (for previously documented reasons)
I'm sure there are plenty of more reasons, but the above are the most prevalent in my mind.
There is no official support for JDBC on Android. There is a private SqlLite driver, but it's not recommended as it is unsupported and might go away in the future.
Read these:
Does Android Support JDBC
http://groups.google.com/group/android-developers/browse_thread/thread/cf3dea94d2f6243c
http://code.google.com/p/sqldroid/
So the recommended way is to not use internal (private) SQlite driver and instead create a REST layer on server through which you access data. This is a recommended way as it minimizes load on device side and also gives you opportunity to create authentication on the server side - having publicly accessible JDBC connection is a big no-no.
精彩评论