我收到了这个错误
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列,但我最近添加了这个以尝试解决问题.有没有人有任何可能有助于解决问题的想法?
我想将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) 我试图看看哪些实现更适合访问Android应用程序中的sqlite数据库
使用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) 我正在学习本教程.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 …
我正在寻找一种方法来暂停给定ContentProvider的通知Uri.用例是:
Activity被绑定到一个CursorAdapter通过CursorLoader.Service可以在a上进行大量批量,单行更新ContentProvider.CursorLoader将加载其上的每一行更新内容,作为ContentProvider被通知侦听ContentResolver#notifyChange.由于我无法编辑ContentProvider,并且我无法控制批处理查询执行,是否有办法暂停Uri(在执行中Service)通知,直到所有ContentProvider管理的查询都已执行?我需要这个,以避免连续重新获得的闪烁CursorLoader.
我的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)
如何解决这个问题?
我决定构建我的免费Android应用程序的付费版本.付费版本有一些额外的功能.如何管理这两个版本?
任何有助于管理这两个项目的建议,但不能直接回答上述问题,也是值得赞赏的.
我收到以下错误:
不是错误(代码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"时出错
根据实体关系模型之间的关系,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_id和category_id来自TblPost和TbCategory.
如何使用房间注释描述关系?
我在我的本地数据库中有一个名为event的表,其中包含以下字段:
服务器会给我一个事件列表,没有收藏字段,最喜欢的字段只是本地的.
我正在使用此代码插入事件
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertEvents(List<Event> events);
Run Code Online (Sandbox Code Playgroud)
问题是,如果一个事件已经存储在本地数据库中,它将丢失最喜欢的属性,并且在插入和替换之后它将始终为false.
有没有办法像这样批量插入,但保留最喜欢的字段?