SQLDroid 是 Android 平台上的 SQLite 数据库的 JDBC 驱动程序。
示例代码:
// your datapath is /data/data/$package/ // e.g. “/data/data/com.lemadi.robotanks.android”
// note that if you want to put it in $datapath/databases/ // the way Activity.openOrCreateDatabase does it, // you have to create the databases subfolder if not already there
String url = “jdbc:sqldroid:” + getDataPath() + “/main.sqlite”; Connection con = DriverManager.getConnection(url);
con.createStatement().execute(“CREATE TABLE MYTABLE (id INT, name CHAR(200))”);
try { con.createStatement().execute(“CREATE TABLE MYTABLE (id INT, name CHAR(200))”); con.createStatement().execute(“CREATE TABLE HIGH_SCORES (level VARCHAR, name CHAR, time INT, timestamp INT)”); } catch (SQLException e1) { System.out.println(“error creating table: i guess they were already there”); }
con.createStatement().execute(“INSERT INTO MYTABLE (id, name) VALUES (100, ‘klm’)”);
PreparedStatement ps = con.prepareStatement(“INSERT INTO MYTABLE (id, name) VALUES (?, ?)”);
ps.setInt(1, (int)(Math.random() * 100)); ps.setString(2, “you’re ” + new Integer((int)(Math.random()*1000)).toString() + ” years old.”); ps.executeUpdate();
ResultSet rs = con.createStatement().executeQuery(“SELECT id, name FROM MYTABLE ORDER BY name”);
while(rs.next()) { System.out.println(“test row: ” + rs.getInt(1) + ” = ” + rs.getString(2)); System.out.println(“test row string: ” + rs.getInt(“id”) + ” = ” + rs.getString(“name”)); }
rs.close();
// this method demonstrates the limited Metadata functionality:
private static boolean tableExists(String tableName) { ResultSet rs = con.getMetaData().getTables(null, null, tableName, null); // rs.next() returns true is there is 1 or more rows return rs.next(); }