gpt4 book ai didi

ios - 将 sqlite 数据库用于 iOS (robovm) 与 libgdx

转载 作者:IT王子 更新时间:2023-10-29 06:28:40 25 4
gpt4 key购买 nike

我有一个 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 类

然后在构造函数中我制作表格

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);
}

显然你需要有一个 Message 对象,但这与问题并没有真正的关系

简单地检索数据:

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>

关于ios - 将 sqlite 数据库用于 iOS (robovm) 与 libgdx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24267005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com