标签: sqliteopenhelper

Android不会更新SQLite数据库

我的Android应用程序中的SQLIte数据库遇到了一些问题.问题是数据库永远不会更新,甚至不会在模拟器的多次重启,Eclipse或从DDMS中删除之后更新.

这是我的onCreate方法,位于扩展SQLiteOpenHelper的类中:

public void onCreate(SQLiteDatabase database) {
    try {
        database.execSQL(ESSENCE_TABLE_CREATE);
        database.execSQL(PACCO_TABLE_CREATE);
        database.execSQL(TAVOLE_TABLE_CREATE);
        database.rawQuery("insert into essenza values(1, 'Rovere')",
                null); // added later
    } catch (SQLException e) {
        Log.e("DB", e.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

在实例化帮助程序后,我请求对数据库的引用:

    helper = new DBHelper(context, dbpath + "/" + DATABASE_NAME);
    database = helper.getWritableDatabase();
Run Code Online (Sandbox Code Playgroud)

似乎rawQuery语句(稍后添加)未执行,而且正在使用的数据库是从先前版本缓存的.我也试图改变数据库的版本,但它没有用.我错过了什么吗?提前致谢.

android sqliteopenhelper

3
推荐指数
1
解决办法
3558
查看次数

在Android中同时访问SQLite数据库 - 数据库已经关闭

我在这个子喷气机上阅读了很多主题,但没有人能回答我的问题.

我从并发线程访问我的数据库,我的SQLiteOpenHelper实现了单例的设计模式,所以我的应用程序只有一个实例.

我使用以下代码访问我的数据库:

 SQLiteDatabase db = DatabaseHelper.getInstance().getWritableDatabase();
 ...
 Do some update in the DB
 ...
 db.close();
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我仍然得到"db already closed"错误,getWritableDatabase()方法是否应该锁定数据库,直到调用close()为止?来自其他线程的其他getWritableDatabase()调用应该等到db关闭?这是对的还是我错过了什么?

sqlite android sqliteopenhelper getwritabledatabase

3
推荐指数
1
解决办法
6404
查看次数

将Context传递给SQLiteOpenHelper

首先,我是Android应用程序的新手,并没有独立工作.我处理这个时,我的队友已经采取了设计,并要求我设置数据库和方法来完成这个,等等.

因此,虽然大多数情况似乎没问题,但我提出:

Context context = null;
DataBaseHelper drinksDataBase = new DataBaseHelper(context); 
Run Code Online (Sandbox Code Playgroud)

进入他的主要活动.

构造函数如下:

public DataBaseHelper(Context  context) {

    super(context, DB_NAME, null, 1);
    this.myContext = context;
    try{
        createDataBase();
    }
    catch(IOException e){

    }
}
Run Code Online (Sandbox Code Playgroud)

忽略null,我假设是应用程序崩溃的当前原因,我将如何获取应用程序的正确上下文,以便我可以使我的数据库工作?

它实际上似乎正在崩溃,this.getReadableDatabase()所以这是否是空的上下文,我不知道.

由于以下原因,Logcat无法启动:

[2012-10-12 10:37:57 - Unexpected error while launching logcat. Try reselecting the device.] device not found
com.android.ddmlib.AdbCommandRejectedException: device not found
    at com.android.ddmlib.AdbHelper.setDevice(AdbHelper.java:752)
    at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:373)
    at com.android.ddmlib.Device.executeShellCommand(Device.java:462)
    at com.android.ddmuilib.logcat.LogCatReceiver$1.run(LogCatReceiver.java:109)
    at java.lang.Thread.run(Unknown Source)  
Run Code Online (Sandbox Code Playgroud)

提前致谢,

詹姆士

android sqliteopenhelper

3
推荐指数
1
解决办法
1万
查看次数

SQLiteCantOpenDatabaseException:未知错误(代码14)无法打开数据库

当我试图获得可读或可写的数据库时,我收到此错误."SQLiteCantOpenDatabaseException:未知错误(代码14)无法打开数据库"我在SQLiteOpenHelper中遇到了这个奇怪的问题,我在这里看到了一些类似问题,但是没有一个能解决我的问题.像我一样绝望,我在下面发布我的代码希望有人发现我没有看到的东西......

(一个重要的信息:我从另一个工作中得到这个应用程序.但是我调试它的非常时间,我仍然没有更改dbname.这与前一个应用程序的名称(ks.db).这个数据库存在在我的调试设备但tr.db没有)

我的DatabaseHelper类是这样的:

//Singleton
private static DatabaseHelper sInstance;

//Log
private static String TAG = "Database";

private static final String NAME_DB = "tr.db";
private static final String PATH_DB_DEBUG = "/mnt/sdcard/";
private static final int VERSION = 4;

//TABLE NAMES
private static final String TABLE_USERS = "users";
private static final String TABLE_TRACKS = "tracks";
private static final String TABLE_ROTAS = "rotas";
...
/**
     *
     * @param context
     * @return Unique instance of DataBaseHelper
     */
    public static synchronized DatabaseHelper getInstance(Context context) {
        if …
Run Code Online (Sandbox Code Playgroud)

sqlite android sqliteopenhelper

3
推荐指数
2
解决办法
2万
查看次数

更新SQLite表而不丢失android中的先前数据

我正在尝试在旧的sqlite数据库表中添加新列。这些表是动态的。我的意思是,它们是在应用程序用户在应用程序中添加特定数据时创建的。

表名称具有类似的后缀。前缀取决于用户输入。现在,在android中,如何在不丢失先前数据的情况下在这些表中添加新列?

java sqlite android sqliteopenhelper

3
推荐指数
1
解决办法
968
查看次数

SQLiteOpenHelper没有调用onCreate

这是我第一次使用SQLiteOpenHelper(或android上的数据库).当我得到一个可写的数据库时,我想知道为什么onCreate没有被调用在每个新类的实例上.难道我做错了什么?

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "MyDatabase.db";
    private static final int DATABASE_VERSION = 1;
    private String PrSQLcmd = "";


public DatabaseHelper(Context context)
{
    super(context, DATABASE_NAME, null, DATABASE_VERSION);  
}


@Override
public void onCreate(SQLiteDatabase db) 
{
    db.execSQL("CREATE TABLE IF NOT EXISTS Contact(Firstname TEXT, LastName TEXT");
}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}
Run Code Online (Sandbox Code Playgroud)

}

sqlite android oncreate sqliteopenhelper

2
推荐指数
1
解决办法
6537
查看次数

SQLiteOpenHelper:未在物理设备上调用onCreate()方法

我在4.4版本中运行的android模拟器上做了很多测试.在我的应用程序上,我使用SQLiteOpenHelper创建一个带有一个表的sqlite数据库:

package com.findwords.modeles;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;

import com.findwords.MainActivity;
import com.findwords.controleurs.MenuController;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * Created by louk on 02/01/14.
 */
public class DictionaryDbHelper extends SQLiteOpenHelper{

    // declare constants fields
    private static final String DB_PATH = "/data/data/com.findwords/databases/";
    private static final String DB_NAME = "dictionary_db";
    private static final int DB_VERSION = 1;

    // declared constant SQL Expression
    private static final String DB_CREATE =
            "CREATE TABLE dictionary ( " +
                    "_id integer …
Run Code Online (Sandbox Code Playgroud)

android android-sdk-2.3 sqliteopenhelper android-sqlite

2
推荐指数
2
解决办法
9119
查看次数

sqlite.SQLiteException:near"s":语法错误:因为撇号

我要将其插入到我的表中的歌曲名称包含"'"(撇号),因此,在请求被执行时会出错.我该如何解决呢?

Cursor pid = mDB.rawQuery("select Id  FROM MusicPlayer WHERE "Path ='" + sname + "';", null);
Run Code Online (Sandbox Code Playgroud)

我得到sname运行时所以.. sname =/mnt/sdcard/Now Thats What I Call Music 85 [Bubanee]/16 - Let's Get Ready To Rhumble (100% Radio Mix) - PJ & Duncan.mp3

我得到以下错误..

android.database.sqlite.SQLiteException: near "s": syntax error: , while compiling: SELECT Id FROM MusicPlayer WHERE Path ='/mnt/sdcard/Now Thats What I Call Music 85 [Bubanee]/16 - Let's Get Ready To Rhumble (100% Radio Mix) - PJ & Duncan.mp3';

因为sname包含let's带有' …

sqlite android cursor sqliteopenhelper

2
推荐指数
1
解决办法
2258
查看次数

为什么我会在我的SQLiteOpenHelper构造函数中获得"不兼容的类型:Bla无法转换为Context"?

我正在使用本教程在我的Android项目中实现SQLite功能.

我有这个SQLiteOpenHelper代码:

public class HHSSQLiteHandler extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "HHS.db";
    private static final String TABLE_VENDORS = "vendors";

    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_VENDORID = "vendorId";
    public static final String COLUMN_COMPANYNAME = "companyName";

    public HHSSQLiteHandler(Context context, String vendor,
                       SQLiteDatabase.CursorFactory factory, int company) {
        super(context, DATABASE_NAME, factory, DATABASE_VERSION);
    }
    . . .
Run Code Online (Sandbox Code Playgroud)

...但尝试以这种方式实例化该类:

protected void onPostExecute(String result) {
    try {
        JSONArray jsonArr …
Run Code Online (Sandbox Code Playgroud)

java sqlite android sqliteopenhelper android-sqlite

2
推荐指数
1
解决办法
4035
查看次数

Android - SQLiteDatabase没有这样的表错误(代码1)

ListView在我的应用程序中,用户可以添加/删除项目.我正在使用SQLiteDatabase应用程序未使用时存储项目但是,SQLiteDatabase给我一个奇怪的错误说"No such table found:subjects(code 1).我无法弄清楚为什么会发生这种情况,我以前曾经使用SQLiteDatabase过几次,但这次它只是不起作用.

这是我的代码:

SubjectsDatabase.java -

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class SubjectsDatabase extends SQLiteOpenHelper {

private static final String SUBJECT_ID = "id";
private static final String SUBJECT_NAME = "name";

private static final String DATABASE_NAME = "subjectsDatabase";
private static final String TABLE_SUBJECTS = "subjects";
private static final int DATABASE_VERSION = 1;

private static final String DATABASE_CREATE …
Run Code Online (Sandbox Code Playgroud)

java sqlite android sqliteopenhelper android-sqlite

2
推荐指数
1
解决办法
4714
查看次数