Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将sqlite数据库用于iOS(robovm)与libgdx一起使用_Ios_Sqlite_Libgdx_Robovm - Fatal编程技术网

将sqlite数据库用于iOS(robovm)与libgdx一起使用

将sqlite数据库用于iOS(robovm)与libgdx一起使用,ios,sqlite,libgdx,robovm,Ios,Sqlite,Libgdx,Robovm,我有一个libgdx项目(Android),其中我使用sqlite数据库。 我正在iOS版本(robovm)中开发同一个项目,但我找不到任何关于iOS版本的sqlite或数据库的信息 是否可以使用相同的sqlite数据库 谢谢。没有关于如何在RoboVM上使用SQLite的文档(至少我知道)。以下链接可能很有用: 我知道这是一个旧线程,但这对我的工作 当然,你不必像这样做,但我就是这样做的 首先,我为SQLite创建了一个名为..的助手类。。SQLiteHelper 这将初始化一些东西 pa

我有一个libgdx项目(Android),其中我使用sqlite数据库。 我正在iOS版本(robovm)中开发同一个项目,但我找不到任何关于iOS版本的sqlite或数据库的信息

是否可以使用相同的sqlite数据库

谢谢。

没有关于如何在RoboVM上使用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;
            }
        }
    
    }
    
    然后每个数据库扩展这个类 例如,我有一个消息数据库

    我创建了一个SqlItemMessages类,它扩展了我创建的助手类

    然后在构造器中,我制作表格

    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>
    
    
    SQLite**
    
    iOS的做法是使用内部使用Sqlite的CoreData API。您可以直接使用Sqlite,但它不是苹果API,您是否需要访问他们的网站并下载所需的文件。您是否发布过完整的代码,我不熟悉上面的LibGDXYes。。如果你在某些特定的事情上需要帮助,现在就试着建立这个。这是什么,phonenum。你也可以粘贴你的KEY_ID声明,等等,还有m.getId()嘿,伙计,现在就开始构建这个。什么是格式化日期代码?我很想看看你的照片。我的messageFromResult也不会编译,我想这是因为Message没有构造函数。我需要什么gradle进口产品?我得到错误:(25,20)Gradle:错误:找不到符号类JDBCDriver@Burf2000我相信这是一个需要下载并添加到构建中的jar