标签: 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万
查看次数

android.database.CursorIndexOutOfBoundsException

我的Android应用中的数据访问代码引发了异常.

以下是导致异常的代码:

String getPost = "SELECT * FROM " + TABLE_POST + ";";
Cursor result = getReadableDatabase().rawQuery(getPost, null);
List posts = new ArrayList();{
Log.d("count", result.getCount() + " post rows");
while (result != null && result.moveToNext());
    Post post = new Post();
    post.setPostId(result.getInt(0));
    posts.add(post);
    ....
}
Run Code Online (Sandbox Code Playgroud)

提出的例外是:

android.database.CursorIndexOutOfBoundsException: Index 2 requested, with a size of 2 exception
Run Code Online (Sandbox Code Playgroud)

log方法产生结果2 post rows.

这有什么不对?

编辑:我已经添加了完整的堆栈跟踪,以便那些希望查看它的人可以这样做.

11-14 09:57:50.538: W/dalvikvm(4710): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
11-14 09:57:50.608: E/AndroidRuntime(4710): FATAL EXCEPTION: main
11-14 09:57:50.608: …
Run Code Online (Sandbox Code Playgroud)

java android exception indexoutofboundsexception android-sqlite

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

SQLite无法在频繁的"SELECT"查询中打开数据库文件(代码14)

我有以下类"Singleton"来处理SQLite连接并确保整个进程/ app有1个连接实例:

public class DBController {
  private static DBController instance = new DBController();
  private static DBHelper dbHelper;
  public static DBController getInstance()
  {
    return instance;
  }
  public SQLiteDatabase dbOpen(Context context)
  {
    if(dbHelper == null)
        dbHelper = new DBHelper(context);
    return dbHelper.getWritableDatabase();
  }
}
Run Code Online (Sandbox Code Playgroud)

而DBHelper类本身:

public class DBHelper extends SQLiteOpenHelper {

  public DBHelper(Context context) {
    super(context, "database.db", null, 1);
  }
  @Override
  public void onCreate(SQLiteDatabase db) {
    final String position = "CREATE TABLE test (" +
            "test TEXT NOT NULL);";
    db.execSQL(position);
  }
}
Run Code Online (Sandbox Code Playgroud)

当我 …

sqlite singleton android android-sqlite

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

SQLite中的LIKE和GLOB有什么区别?

以下查询有什么区别?

FROM COMPANY WHERE ADDRESS  GLOB '*-*';
FROM COMPANY WHERE ADDRESS  LIKE '%-%';
Run Code Online (Sandbox Code Playgroud)

我知道不像LIKE运算符,GLOB区分大小写.这是唯一的区别吗?

sqlite android-sqlite

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

在Android上处理SQLite表和游标

我很难在Android上优化SQLite数据库处理的向后兼容性,复杂性和最佳实践.我找到了两种不被弃用的方法来管理SQLite数据库和游标:

  • 直接通过 android.database.sqlite
  • ContentProvider,CursorLoaderLoaderManager

我正在尝试设计数据库实现的未来证明.这意味着我想实施Google推广的最佳实践.我找到了一个关于实现ContentProvider的教程LoaderManager.

如果我遵循Lars Vogels提案,我的代码会被重复和不必要的复杂性所淹没.它对我的数据库中的某些表有意义.但是对于具有三个字段的映射表(例如)来实现它是没有意义的.此外,我遇到了问题ActionbarSherlock和回调接口LoaderManager(有一个解决方案,但它会使我的数据处理类加倍).

通过直接处理数据库和游标android.database.sqlite会引发资源管理问题(关闭游标!)并使我负责任务处理.

我的问题:
你如何在Android上处理SQLite数据库?
你什么时候去加倍努力,实施ContentProviderLoaderManager
你如何保持向后兼容?

我目前的方法:
我创建了一个将数据库I/O(via android.database.sqlite)与活动分开的类.所有方法都会打开和关闭它们在执行期间使用的游标(在我的活动之外),并根据需要返回对象或数据(而不是游标).I/O操作在中执行AsyncTasks.这种方法似乎非常弃用.

android android-contentprovider android-sqlite

7
推荐指数
1
解决办法
872
查看次数

sqlite:如何添加总时间hh:mm:ss where column datatype是DATETIME?

柱

这是我在sqlite db中的列的快照,其定义的模式中的数据类型具有DATETIME.现在我想应用一些聚合函数sum()来计算这个列的总和.

我使用的查询是:

select sum(total_expend_time) from timetable; 但它返回0.0作为结果.

database sqlite android-sqlite

7
推荐指数
1
解决办法
3939
查看次数

每次启动应用程序时资源ID都会更改吗

我将图像存储在drawable中,并将它们的资源ID存储在SQLite数据库中。我的数据库是在应用程序首次启动时创建的。

将图像ID保存在数据库中是否很好,还是每次应用程序启动时ID都会更改?

如果id更改,则在取回图像id时可能会收到错误。因此,将图像ID存储在数据库中是个好主意吗?

我需要将图像路径与其他相关数据一起存储在数据库中,这就是为什么我将图像ID存储在数据库中的原因。

android android-sqlite

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

光标窗口分配2048 kb失败.#Open Cursors = 1(此proc = 1打开的#游标)

我正在制作一个使用数据库的Kiosk应用程序.该应用程序一直在前台运行.该应用程序有许多使用一个共享DataBaseHelper实例的线程.该应用程序完美无缺,但大多数时间在5或6小时后,我遇到这些异常,然后应用程序崩溃:

E/DataBaseHelper:2048 kb的游标窗口分配失败.#Open Cursors = 1(此proc = 1打开的#游标)

E/CursorWindow:由于错误-24,无法分配大小为2097152的CursorWindow'/data/user/0/com.kios.frm/databases/YadProjectDB.db'.

E/SQLiteLog:(14)无法打开[00bb9c9ce4]第30192行的文件

E/SQLiteLog:(14)语句中止16:[SELECT number FROM sms LIMIT 5]无法打开数据库文件

E/SQLiteQuery:异常:无法打开数据库文件(代码14);
查询:SELECT编号FROM sms LIMIT 5

E/SQLiteLog:(14)os_unix.c:30192:(24)
open(/data/user/0/com.kiosk.frm/databases/YadProjectDB.db-journal) -

我正确关闭了光标,但仍然获得了这些异常.那些例外是什么?这些例外的原因是什么?

主要活动

private DataBaseHelper db = null; // Global     
Run Code Online (Sandbox Code Playgroud)

MainActivity onCreate方法:

db = new DataBaseHelper(this);

new Thread(new Runnable() {
@Override
public void run() {
    while (threadRunningFlag) {

    Cursor result = null;
    try {

        result = db.getData("SELECT " + DataBaseHelper.SMS_COLUMN_PHONE_NUMBER  + " FROM " + DataBaseHelper.SMS_TABLE_NAME + " LIMIT 5");
        if (result != null && result.getCount() > …
Run Code Online (Sandbox Code Playgroud)

database android android-cursor android-sqlite android-4.4-kitkat

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

数据库存储在哪里 - Cordova-sqlite-storage

请不要标记此重复项。在发布这个之前,我搜索了很多并且浏览了很多帖子。我在科尔多瓦工作。我有一个 android 5.1.1 设备,我正在测试该应用程序。我使用以下代码打开了一个数据库 -

var db = window.sqlitePlugin.openDatabase({name: 'my.db', location: 'default'});
Run Code Online (Sandbox Code Playgroud)

这运行良好,我也可以执行 CURD,但是,我无法在设备上或笔记本电脑上的应用程序文件夹中找到数据库。我没有root设备。也无法在我的应用程序文件夹中找到 /data/data//databases/。

在哪里可以找到数据库文件?

cordova android-sqlite

7
推荐指数
1
解决办法
1326
查看次数