【问题标题】:How to import sqlite file into my project?如何将 sqlite 文件导入我的项目?
【发布时间】:2010-06-23 13:56:06
【问题描述】:

我在 android 项目之外使用 eclipse 制作一个 sqlight

我应该在我的 android 清单中添加什么以使其正常工作?

谢谢 Mathias,让我们把这个 q 带到另一个使用 java 生成 SQL 文件的项目中 假设这一点。调用SQLiteDatabase.openDatabase()时如何设置SQLiteDatabase.NO_LOCALIZED_COLLATORS标志?

我的代码在那里

Class.forName("org.sqlite.JDBC");            
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
/*
*some code 
*/
   Statement stat = conn.createStatement();
    stat.executeUpdate("drop table if exists "+TABLE_NAME+";");
    //stat.executeUpdate("create table "+TABLE_NAME+" (name, occupation);");
    stat.executeUpdate("create table "+TABLE_NAME+" ("+VALUE+","+TYPE+","+LETTER+");");
    PreparedStatement prep = conn.prepareStatement(
      "insert into "+TABLE_NAME+" values (?, ?,?);");

即使我使用:

  db = SQLiteDatabase.openDatabase(myPath, null,  SQLiteDatabase.NO_LOCALIZED_COLLATORS);

当我使用查询时:

     String s = "Israel";
Cursor cursor = db.query(TABLE_NAME, new String[] {VALUE}
        ,VALUE + " like " + "'%" + s +"%'", null, null, null, null);

我得到一个例外。

【问题讨论】:

  • 好的,如果您在代码中不使用 SQLiteDatabase 和/或 SQLiteOpenHelper 而是使用本机 Java 方法,那么您最好手动在数据库中创建元数据表(尽管可以为空) .我建议尽管查看上述类,它们使在 Android 上使用 sqlite 更容易。我下面的方法假设您在打开数据库时使用 SQLiteDatabase 类。
  • 谢谢你,Mathias 甚至认为我还在遭受这种情况,所以还是谢谢。

标签: android eclipse sqlite


【解决方案1】:

您无需在 android 清单中添加任何特殊内容。您可以从任何地方打开数据库,即也可以从您的 sdcard 或其他地方打开数据库。否则,将数据库放在应用程序的 assets 文件夹中是一个常见的地方。

当您在 android 项目之外创建数据库时,只需确保创建元数据表(如 Android 文档中所述)或在调用 SQLiteDatabase.openDatabase() 时设置 SQLiteDatabase.NO_LOCALIZED_COLLATORS 标志。您还应该注意,所有表中的主键都是_id。这些是创建新数据库时要考虑的最重要的事情。

对元数据表也有帮助的可能是:

What is the android_metadata table?

No such table android_metadata, what's the problem?

有用的博客: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

【讨论】:

  • 在调用 SQLiteDatabase.openDatabase() 时我应该在哪里设置 SQLiteDatabase.NO_LOCALIZED_COLLATORS 标志?
  • 参见developer.android.com/reference/android/database/sqlite/… 作为 openDatabase(String, SQLiteDatabase.CursorFactory, int) 方法的第三个参数。您在打开数据库的应用程序中调用它。
  • 另一个 q 当我使用模拟器并想要获取本地应用程序文件,即我正在使用的数据库时:private static final String DB_PATH = "/data/data/com.myappname/assets/test1. D b”;这是模拟器上的正确位置吗?
  • 我认为路径是“/data/data/com.myappname/databases/test1.db”。您实际上可以通过 Eclipse 中的 ddms 浏览模拟器(或者也可以独立浏览,ddms 是 Android SDK 中的一个工具)。然后您将有一个“文件资源管理器”选项卡,您可以在其中浏览系统以及数据文件夹。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多