如何在我的Android程序中的SQLite Manager应用程序中使用我创建的SQLite DB

如何在我的Android程序中的SQLite Manager应用程序中使用我创建的SQLite DB,android,sqlite,navicat,sql-manager,Android,Sqlite,Navicat,Sql Manager,由于我在Android应用程序中处理许多表,我决定在SQLite管理器中创建数据库(DB)(如firefox插件或用于SQLite的navicat)。我完成了创建并导出了.sql文件!但是我不知道如何使用这个文件! 当然,我找到了一些关于这方面的帖子,将DB(在一个有根的手机上)放在…data/data/{your package name}/等中,但我不明白这一步之后该怎么办!!(我只知道将db引入android应用程序的代码!!) 有人能告诉我如何在我的应用程序中使用这些方法一步一步地使用

由于我在Android应用程序中处理许多表,我决定在SQLite管理器中创建数据库(DB)(如firefox插件或用于SQLite的navicat)。我完成了创建并导出了.sql文件!但是我不知道如何使用这个文件! 当然,我找到了一些关于这方面的帖子,将DB(在一个有根的手机上)放在…data/data/{your package name}/等中,但我不明白这一步之后该怎么办!!(我只知道将db引入android应用程序的代码!!)

  • 有人能告诉我如何在我的应用程序中使用这些方法一步一步地使用我创建的数据库吗-

  • 这是使用这些SQLite管理器的好方法吗?或者,尽管在android中使用代码创建多个表很复杂,但您更喜欢它

  • sqlite 2和sqlite 3的主要区别是什么?它们是由不同的Android版本支持还是只支持Sqlite的更新

编辑:将数据库复制到assest文件夹并使用复制代码后:

03-16 11:32:20.370: I/SqliteDatabaseCpp(3999): sqlite returned: error code = 14, msg = cannot open file at line 27712 of [8609a15dfa], db=/data/data/com.androidhive.xmlparsing/databases/surveydb.sqlite 03-16 11:32:20.370: I/SqliteDatabaseCpp(3999): sqlite returned: error code = 14, msg = os_unix.c: open() at line 27712 - "" errno=2 path=/data/data/com.androidhive.xmlparsing/databases/surveydb.sqlite, db=/data/data/com.androidhive.xmlparsing/databases/surveydb.sqlite 03-16 11:32:20.370: E/SqliteDatabaseCpp(3999): sqlite3_open_v2("/data/data/com.androidhive.xmlparsing/databases/surveydb.sqlite", &handle, 1, NULL) failed 03-16 11:32:20.380: E/SQLiteDatabase(3999): Failed to open the database. closing it. 03-16 11:32:20.380: E/SQLiteDatabase(3999): android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:983) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:956) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:932) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at database.AssetDatabaseHelper.checkExist(AssetDatabaseHelper.java:55) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at database.AssetDatabaseHelper.importIfNotExist(AssetDatabaseHelper.java:81) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at com.androidhive.xmlparsing.AndroidXMLParsingActivity.onCreate(AndroidXMLParsingActivity.java:78) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1834) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.app.ActivityThread.access$500(ActivityThread.java:122) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1027) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.os.Handler.dispatchMessage(Handler.java:99) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.os.Looper.loop(Looper.java:132) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at android.app.ActivityThread.main(ActivityThread.java:4126) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at java.lang.reflect.Method.invokeNative(Native Method) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at java.lang.reflect.Method.invoke(Method.java:491) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 03-16 11:32:20.380: E/SQLiteDatabase(3999): at dalvik.system.NativeStart.main(Native Method) 03-16 11:32:20.380: W/System.err(3999): android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file 03-16 11:32:20.380: W/System.err(3999): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method) 03-16 11:32:20.380: W/System.err(3999): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:983) 03-16 11:32:20.380: W/System.err(3999): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:956) 03-16 11:32:20.380: W/System.err(3999): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:932) 03-16 11:32:20.380: W/System.err(3999): at database.AssetDatabaseHelper.checkExist(AssetDatabaseHelper.java:55) 03-16 11:32:20.380: W/System.err(3999): at database.AssetDatabaseHelper.importIfNotExist(AssetDatabaseHelper.java:81) 03-16 11:32:20.380: W/System.err(3999): at com.androidhive.xmlparsing.AndroidXMLParsingActivity.onCreate(AndroidXMLParsingActivity.java:78) 03-16 11:32:20.380: W/System.err(3999): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050) 03-16 11:32:20.380: W/System.err(3999): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782) 03-16 11:32:20.380: W/System.err(3999): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1834) 03-16 11:32:20.380: W/System.err(3999): at android.app.ActivityThread.access$500(ActivityThread.java:122) 03-16 11:32:20.380: W/System.err(3999): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1027) 03-16 11:32:20.380: W/System.err(3999): at android.os.Handler.dispatchMessage(Handler.java:99) 03-16 11:32:20.380: W/System.err(3999): at android.os.Looper.loop(Looper.java:132) 03-16 11:32:20.380: W/System.err(3999): at android.app.ActivityThread.main(ActivityThread.java:4126) 03-16 11:32:20.380: W/System.err(3999): at java.lang.reflect.Method.invokeNative(Native Method) 03-16 11:32:20.380: W/System.err(3999): at java.lang.reflect.Method.invoke(Method.java:491) 03-16 11:32:20.380: W/System.err(3999): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) 03-16 11:32:20.380: W/System.err(3999): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 03-16 11:32:20.380: W/System.err(3999): at dalvik.system.NativeStart.main(Native Method) 更新2:db脚本:

CREATE TABLE "**" ("_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "**" TEXT, "****" INTEGER); CREATE TABLE "***" ("_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "***" INTEGER UNIQUE , "***" TEXT); CREATE TABLE "**" ("_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "***" INTEGER UNIQUE , "**" INTEGER, "**" INTEGER, "**" TEXT, "impGender" TEXT, "**" TEXT, "***" INTEGER, "***" DATETIME DEFAULT CURRENT_TIMESTAMP); CREATE TABLE "**" ("_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "**" TEXT); CREATE TABLE "**" ("_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "***" INTEGER UNIQUE , "***" TEXT, "srQType" INTEGER, "***" INTEGER, "**" BOOL, "**" FLOAT, "**" FLOAT, "**" INTEGER, "**" UNIQUE ); CREATE TABLE "*" ("_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "**" INTEGER NOT NULL UNIQUE , "***" INTEGER, "**" INTEGER, "**" INTEGER, "**" INTEGER, "**" TEXT, "**" TEXT); CREATE TABLE "**" ("_id" INTEGER PRIMARY KEY, "***" TEXT); CREATE TABLE "**" ("_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "**" TEXT, "srDesc" TEXT, "***" INTEGER, "**" DATETIME, "**" DATETIME, "****" INTEGER, "srCode" INTEGER); CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US'); 有什么问题

你能帮我吗?

  • Android支持Sqlite 3
  • 使用导入的数据库不需要根手机
使用导入的数据库的步骤:

  • 将数据库转储到/assets文件夹中
  • 从中添加代码
  • 通过执行以下代码导入数据库

        AssetDatabaseHelper dbHelper = new AssetDatabaseHelper(
            getBaseContext(), YOUR_DATABASE_NAME);
    try {
        dbHelper.importIfNotExist();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

  • 还有一个问题:我的数据库(是用这些软件创建的)是“.sql”格式的,不是.sqlite!!!可以吗?我也用firefox的sqlite管理器创建了我的。您没有单击导出。新创建的数据库是一个扩展名为.sqlite的文件。你所需要的就是那个文件。然后按照步骤做。对不起,这对我不起作用!!!我用logcat错误编辑问题!您必须在异常第一次创建时捕获它。我更新了代码。您确定在执行此代码之前没有尝试打开它吗?这段代码应该是处理数据库的第一件事。
    new AssetDatabaseHelper(this , "surveydb.sqlite").importIfNotExist();
    
        AssetDatabaseHelper dbHelper = new AssetDatabaseHelper(
            getBaseContext(), YOUR_DATABASE_NAME);
    try {
        dbHelper.importIfNotExist();
    } catch (IOException e) {
        e.printStackTrace();
    }