我的代码工作正常对于Android 2.3但我不知道为什么它不适用于Android 4.2
我的异常日志就在这里
01-17 09:54:04.411: E/SQLiteLog(24202): (14) cannot open file at line 30176 of [00bb9c9ce4]
01-17 09:54:04.411: E/SQLiteLog(24202): (14) os_unix.c:30176: (2) open(/data/data/com.example.myapp/databases/myapp.db) -
Failed to open database '/data/data/com.example.mypapp/databases/myapp.db'.
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:669)
at com.example.myapp.DataBaseHelper.checkDataBase(DataBaseHelper.java:80)
at com.example.myapp.DataBaseHelper.createDataBase(DataBaseHelper.java:47)
at com.example.myapp.MainActivity.onCreate(MainActivity.java:61)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at …Run Code Online (Sandbox Code Playgroud) 我在做一个使用sqlite数据库的应用程序我的应用程序中有一个功能,它有一个"更新数据库"按钮.
当用户单击"更新数据库"按钮时,我需要使用URL中的新db文件升级旧的db文件.
这该怎么做.研究告诉我,我们无法更改数据库,因为它在.apk文件中.对此有什么解决方案吗?请帮帮我.谢谢.
我正在用SQL开发一个简单的Android应用程序.我按照以下指南 - http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
尝试打开数据库时出错.这是我的DataBaseHelp.Java类 -
public class DataBaseHelper extends SQLiteOpenHelper{
private static String DB_PATH = "/data/data/and.testDB/databases/";
private static String DB_NAME = "MyData";
private SQLiteDatabase myDataBase;
private final Context myContext;
public DataBaseHelper(Context context) {
super(context, DB_NAME, null, 1);
this.myContext = context;
}
public void createDataBase() throws IOException{
boolean dbExist = checkDataBase();
if(dbExist){
//do nothing - database already exist
}else{
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
private boolean checkDataBase(){
SQLiteDatabase checkDB …Run Code Online (Sandbox Code Playgroud) 我正在使用GreenDaoorm库来创建数据库,它与代码中的第一个创建数据库示例一起使用.
现在问题是我找不到任何文档或任何与数据库从资产文件夹复制到内存中数据库相关的内容.
我对SQLiteDatabase可接受的文件格式感到困惑.我想使用我在SQLite数据库浏览器中创建的预先存在的数据库.SQL,CSV和文本文件有导出选项.我已经尝试在Notepad ++中将文件作为文本文件和SQL文件打开,我所看到的只是一个带有INSERTS的CREATE TABLE命令(我通过SQLite数据库浏览器创建).这是错误的文件类型吗?或者SQLiteDatabase是否实际使用此信息来创建表?我已将这些文件与自2009年以来引用的代码一起使用:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/但该链接的代码不适合我.该文件无法打开进行复制,或者可以打开但是一旦尝试查询,我就会收到一条错误消息,说"表名"没有找到这样的表.
码:
public class DatabaseHelper extends SQLiteOpenHelper {
public final static int DB_VERSION = 1;
public final static String DB_PATH = "/data/data/seattle.tourists/databases/";
public final static String DB_NAME = "attractioninfo";
Context myContext;
public DatabaseHelper(Context context ) {
super( context, DB_NAME, null, DB_VERSION );
myContext = context;
}
public void createDatabase() {
boolean dbExists = databaseExists();
if ( !dbExists ) {
this.getReadableDatabase();
try {
copyDatabase();
}
catch ( IOException e ) {
System.out.println( "copy …Run Code Online (Sandbox Code Playgroud) 我有一个.sql文件,insert statements在C:\sqldata\MyData.sql.我需要sqlite使用此.sql文件在我的Android应用程序中将数据插入数据库.
我怎么能这样做?
我有一个非常具体的问题.
首先让我解释一下我想要做什么,然后解决问题.
基本上我要做的是将现有的.db数据库文件存储在assets文件夹中,然后在安装后我想将.db文件从资产复制到Android中的默认数据库位置.与此页面类似的答案[link] 如何在Android应用程序中使用现有数据库.
问题对于无根设备我无法访问/data/data/<<package name folder>>.在这种情况下,数据库文件存储在何处.在其他方面,我想将资产从资产复制到数据库的应用程序默认位置DB_PATH = "/data/data/" + context.getPackageName() + "/databases/",如果是root用户设备.对于无根设备是否相同?
我试图从sdcard或任何外部位置导入我的sqlite数据库到我的Android应用程序.我的应用程序需要数据库导入,以便数据库架构不会更改,但记录会根据要导入的数据库而更改.
(例如,我可能在给定时间导入具有10条记录的DatabaseA,而另一次我可能导入具有25条记录的DatabaseA.数据库A始终从同一外部位置导入).
到目前为止我使用assets文件夹看到的导入方法没有帮助.我想导入指向外部位置的数据库.
sqlite android android-sqlite android-permissions android-studio
如何在assets文件夹中保存.db或.sqlite.这时我正在这样做:
@Override
public void onCreate(SQLiteDatabase db) {
mDatabase = db;
SQLiteDatabase.openOrCreateDatabase("assets/"+DATABASE_NAME+".db", null);
mDatabase.execSQL(FTS_TABLE_CREATE);
}
Run Code Online (Sandbox Code Playgroud)
但openOrCreateDatabase给出错误.我尝试使用.db和.sqlite,但错误是一样的.
可能重复:
如何将现有数据库与Android应用程序一起使用
如何将.db文件从资产放入data/data/packagename /而不使用资产中的.db文件复制内容.我不想创建数据库,因为将.db文件放在资产中是没用的.我探索它,但所有再次创建数据库但我只想直接放置.db文件.
我已经成功创建了一个数据库程序.基本上我正在处理一个小复杂的数据库,所以需要在SQLITE MANAGER中创建数据库并使用我的android代码导入/链接该数据库.请建议我做这个教程.或任何其他帮助我的代码.谢谢
这是我的数据库代码现在我要导入mYdataBase.sqlite文件.
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "contactsManager";
private static final String TABLE_CONTACTS = "contacts";
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_PH_NO = "phone_number";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + …Run Code Online (Sandbox Code Playgroud)