用libgdx为iOS(robovm)使用sqlite数据库

我有一个libgdx项目(Android),我在哪里使用SQLite数据库 。 我正在开发在iOS版本(robovm)相同的项目,我找不到任何关于iOS版本的SQLite或数据库。

是否有可能使用相同的SQLite数据库?

谢谢。

我知道这是一个古老的线程,但这对我工作

你不必这样做,当然,这是我如何做到的

首先我做了一个SQLite的助手类叫SQLiteHelper这将初始化的东西

package com.hamzahrmalik.mitto.sqlite; import java.io.File; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import SQLite.JDBCDriver; import com.hamzahrmalik.mitto.utils.Util; public class SQLiteHelper { private String DATABASE_NAME; private JDBCDriver driv; private Connection connection; final String DB_PATH = new File(System.getenv("HOME"), "Library/") .getAbsolutePath(); public SQLiteHelper(String DATABASE_NAME) { this.DATABASE_NAME = DATABASE_NAME; driv = new JDBCDriver(); try { connection = driv.connect("sqlite:/" + DB_PATH + this.DATABASE_NAME, null); } catch (SQLException e) { } } public void execUpdate(String sql) { Util.log("Running SQL " + sql); try { Statement statement = connection.createStatement(); statement.executeUpdate(sql); //connection.close(); } catch (SQLException e) { e.printStackTrace(); } } public ResultSet execQuery(String query) { Util.log("Running SQL query " + query); try { Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery(query); return rs; } catch (SQLException e) { return null; } } } 

然后每个数据库扩展这个类例如,我有一个数据库的消息

我做了一个SQLiteMessages类,它扩展了我所做的Helper类

然后在构造函数中创build表

 final String CREATE_MESSAGES_TABLE = "CREATE TABLE IF NOT EXISTS " + this.phonenum + "(" + KEY_ID + " INTEGER PRIMARY KEY NOT NULL," + KEY_MESSAGE + " TEXT," + KEY_FROM + " TEXT," + KEY_TO + " TEXT," + KEY_DATE + " TEXT," + KEY_STATUS + " INTEGER)"; execUpdate(CREATE_MESSAGES_TABLE); 

然后当我可以在SQL中添加和删除和更新正常

 public void addMessage(Message m) { final String ADD_MESSAGES = "INSERT into " + phonenum + " VALUES('" + m.getId() + "','" + m.getMessage() + "', '" + m.getSender() + "', '" + m.getRecipient() + "', '" + Util.formatDate(m.getTime()) + "', '" + m.getStatus() + "')"; execUpdate(ADD_MESSAGES); } 

显然你需要有一个消息对象,但那不是真的与问题有关

简单地回顾一下数据:

 public Message getMessage(int id) { ResultSet rs = execQuery("SELECT * FROM " + phonenum + " WHERE " + KEY_ID + " = " + String.valueOf(id)); try { if (rs.next()) { Message m = messageFromResult(rs); return m; } } catch (SQLException e) { e.printStackTrace(); } return null; } public Message messageFromResult(ResultSet rs) { try { return new Message(rs.getInt(KEY_ID), rs.getString(KEY_MESSAGE), rs.getString(KEY_FROM), rs.getString(KEY_TO), Util.parseDate(rs.getString(KEY_DATE)), rs.getInt(KEY_STATUS)); } catch (SQLException e) { e.printStackTrace(); return null; } } 

不需要外部库请记住将其添加到您的robovm.xml

 <forceLinkClasses> <pattern>SQLite.**</pattern> </forceLinkClasses> 

没有文档(至less我知道)如何在RoboVM上使用SQLite。 以下链接可能是有用的,虽然:

  1. https://groups.google.com/forum/#!topic/robovm/5KF_nQJqHR8
  2. Android支持JDBC吗?