标签: android-sqlite

Android:列'_id'不存在

我收到了这个错误

IllegalArgumentException:列'_id'不存在

当使用a SimpleCursorAdapter从我的数据库中检索时,表确实有这个_id列.注意到这是一个常见问题,我尝试在线解决一些解决方案,但没有一个能够解决.这是我的游标查询:

SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, R.layout.quoterow, myCursor, new String[]{"_id", "quote"}, new int[]{R.id.quote});
Run Code Online (Sandbox Code Playgroud)

虽然我应该提到原来没有包含该_id列,但我最近添加了这个以尝试解决问题.有没有人有任何可能有助于解决问题的想法?

sqlite android android-sqlite android-cursoradapter

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

将JSON数据插入到android中的SQLite数据库中

我想将JSON数组中的数据插入到SQLite数据库中.我创建了两个类CategoryHelper.java和AndroidJSONParsingActivity.java来获取java响应.当我运行代码得到databaseHelper.saveCategoryRecord(id,name);我的API中的异常工作正常并给我数据.

我的代码如下:

CategoryHelper.java

package com.androidhive.jsonparsing;

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

public class CategoryHelper {
    private static final int DATABASE_VERSION = 2;
    private static final String DATABASE_NAME = "category.db";
    private static final String TABLE_NAME = "tbcategory";
    public static final String CATEGORY_COLUMN_ID = "_id";
    public static final String CATEGORY_COLUMN_NAME = "name";
    Category openHelper;
    private SQLiteDatabase database;

    public CategoryHelper(Context context){
        openHelper = new Category(context);
        database = openHelper.getWritableDatabase();
    }
    public void saveCategoryRecord(String id, String name) {
        ContentValues …
Run Code Online (Sandbox Code Playgroud)

sqlite android json sqliteopenhelper android-sqlite

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

Singleton与Android中的Database Helper类的静态内部类

我试图看看哪些实现更适合访问Android应用程序中的sqlite数据库

实施1

使用DatabaseHelper类扩展SqliteOpenHelper并使用单例模式.在某些罕见的情况下,我确实看到崩溃,因为数据库已关闭.虽然有点刺激,但我让他们通过只是因为它在宏伟的计划和我拥有的项目数量上是次要的.

public class DBHelper extends SQLiteOpenHelper {

        private static DBHelper instance;

        private final String CREATE_HEALTH_DATA_TABLE = "CREATE TABLE IF NOT EXISTS my_table ( " 
        + BaseColumns._ID   + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
        + MT_FIELD_NAME     + " TEXT NOT NULL );";

        private DBHelper getInstance(Context c) {
             if (instance == null) {
                  instance = new DBHelper(c);
             }
             return instance;
        }

        private DBHelper(Context c) {
             super(c, "my_database.sqlite", null, 0);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(CREATE_TABLE);
        } …
Run Code Online (Sandbox Code Playgroud)

android android-contentprovider android-sqlite

8
推荐指数
1
解决办法
2442
查看次数

为什么我们需要onUpgrade(); SQLiteOpenHelper类中的方法

我正在学习本教程.http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

可以任何身体请让我清楚这段代码.

 // Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
            + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
            + KEY_PH_NO + " TEXT" + ")";
    db.execSQL(CREATE_CONTACTS_TABLE);
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

    // Create tables again
    onCreate(db);
}
Run Code Online (Sandbox Code Playgroud)

问题

onUpgrade();方法的目的是什么?

什么时候叫?正如文档所说this …

database sqlite android sqliteopenhelper android-sqlite

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

禁用ContentProvider URI上的通知

我正在寻找一种方法来暂停给定ContentProvider的通知Uri.用例是:

  1. 一个Activity被绑定到一个CursorAdapter通过CursorLoader.
  2. A Service可以在a上进行大量批量,单行更新ContentProvider.
  3. CursorLoader将加载其上的每一行更新内容,作为ContentProvider被通知侦听ContentResolver#notifyChange.

由于我无法编辑ContentProvider,并且我无法控制批处理查询执行,是否有办法暂停Uri(在执行中Service)通知,直到所有ContentProvider管理的查询都已执行?我需要这个,以避免连续重新获得的闪烁CursorLoader.

android android-contentprovider android-sqlite

8
推荐指数
1
解决办法
1595
查看次数

如何在dd-mm-yyyy格式的sqlite db中选择两个日期之间的数据?

我的dd-mm-yyyy格式化数据库中有日期列.

我想在两个日期之间搜索数据.

我试过了

SELECT * FROM t_data where orderdate between '01-05-2012 00:00:00' and '31-05-2012 23:59:59'
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM t_data where orderdate >= '05-05-2012' and  orderdate <='31-05-2012'
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

database sqlite android-sqlite

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

如何管理Android项目的免费和付费版本?

我决定构建我的免费Android应用程序的付费版本.付费版本有一些额外的功能.如何管理这两个版本?

  • 是否可以根据相同的源代码保留它们?
  • 如果应用程序需要唯一的软件包名称,如何强制付费应用程序替换免费版本?
  • 那么db,偏好和其他私有存储的东西,如何在不将所有数据暴露给世界其他地方的情况下共享它们呢?

任何有助于管理这两个项目的建议,但不能直接回答上述问题,也是值得赞赏的.

android android-preferences android-sqlite

8
推荐指数
1
解决办法
2171
查看次数

无法以读/写模式打开数据库

我收到以下错误:

不是错误(代码0):无法以读/写模式打开数据库.

我已经添加了

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

我正在尝试在SD卡中存在的数据库中输入数据,我能够通过"OPEN_READONLY"读取数据库中已存在的数据.使用"OPEN_READWRITE"时出错

android android-sqlite

8
推荐指数
1
解决办法
6040
查看次数

如何使用Android Room创建一个包含两个或多个外键的表?

在此输入图像描述

根据实体关系模型之间的关系,tbl_post并且tbl_category可以使用指定房间持久性库如下:

@Entity(foreignKeys = @ForeignKey(
    entity = TblPost.class,
    parentColumns = "id",
    childColumns = "tbl_post_id")
)
class TblPostCategory {
    @PrimaryKey
    public String id;

    @ColumnInfo(name = "user_id")
    public String postId;
}
Run Code Online (Sandbox Code Playgroud)

但是TblPostCategory取决于两个外键:post_idcategory_id来自TblPostTbCategory.

如何使用房间注释描述关系?

sqlite android android-sqlite android-room

8
推荐指数
1
解决办法
7393
查看次数

房间 - 插入或替换,但保留数据库字段?

我在我的本地数据库中有一个名为event的表,其中包含以下字段:

  • id(PK)
  • 姓名(文字)
  • 约会时间)
  • 最喜欢的(int,0或1)

服务器会给我一个事件列表,没有收藏字段,最喜欢的字段只是本地的.

我正在使用此代码插入事件

@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertEvents(List<Event> events);
Run Code Online (Sandbox Code Playgroud)

问题是,如果一个事件已经存储在本地数据库中,它将丢失最喜欢的属性,并且在插入和替换之后它将始终为false.

有没有办法像这样批量插入,但保留最喜欢的字段?

sqlite android android-sqlite android-room

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