标签: android-sqlite

游标:"fillWindow();"中的无效语句

我收到此错误:

Cursor:fillWindow()中的无效语句

这是什么意思?有关如何克服它的任何建议?

android android-sqlite

5
推荐指数
0
解决办法
2603
查看次数

如何使用id sqlite获取行?

这是一个简单的!然而,我错过了一些东西.请帮帮我.在这里,我试图通过id获取值,但不能这样做.即使在更改id的值后,它也会返回相同的值.

    db = openOrCreateDatabase("DBSOURCE", 0, null);
    Cursor cursorc = db.rawQuery("SELECT * FROM LIST WHERE ID="+id+"", null);
    cursorc.moveToFirst();

    int NameID = cursorc.getColumnIndex("Name");
    int mobilenumberID = cursorc.getColumnIndex("MoblieNumber");

    edName.setText(cursorc.getString(NameID));
    edMobNum.setText(cursorc.getString(mobilenumberID));

    cursorc.close();

    db.close();
Run Code Online (Sandbox Code Playgroud)

java sqlite android android-sqlite

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

如何在android中单击listview项目从数据库获取id

我在本网站上搜索了与此相关的各种问题,但我无法解决我得到的问题.

我想点击listview项目从数据库中获取id

这是我的类别类:

package com.example.reminders;

import java.util.List;

import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class Categories extends ListActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DBAdapter db = new DBAdapter(Categories.this);
        db.open();
        List<String> cs = db.getAllCategoriesList();
        setListAdapter(new ArrayAdapter<String>(this, R.layout.activity_categories,cs));
        ListView listView = getListView();
        listView.setTextFilterEnabled(true);
        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // When clicked, show a toast with the …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-sqlite

5
推荐指数
1
解决办法
8230
查看次数

如何在android中使用ormlite在外键上执行级联删除

我在android中使用ormlite并成功创建表并使用DAO执行不同的操作.

但是如果从主表中删除主键,我就一直在删除外键行.

我有两个名为Parent和child的表.父母有多个孩子,所以我将孩子与外键联系起来.

代码:
父表:

@DatabaseField(id = true)
private Integer id;

@ForeignCollectionField(eager = false)
private ForeignCollection<Child> childCollection;
Run Code Online (Sandbox Code Playgroud)

子表:

@DatabaseField(id = true)
private Integer id;

@DatabaseField(foreign = true, foreignAutoRefresh = true, canBeNull = false,
   index = true, columnDefinition = "INTEGER REFERENCES parent(id) ON DELETE CASCADE")
private Parent parent;
Run Code Online (Sandbox Code Playgroud)

现在如果我删除特定id的父行,那么这不会从子表中删除子项.

public void deleteById(Integer parentId) {
    try {
        Dao<Parent, Integer> parentDao = databaseHelper.getParentDao();
        parentDao .deleteById(parentId);

    } catch (SQLException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

请指导我,我做错了.我曾多次尝试和谷歌,但没有运气.

database orm android ormlite android-sqlite

5
推荐指数
1
解决办法
3302
查看次数

处理橱柜中的列表的最佳方法(android库)

橱柜(https://bitbucket.org/qbusict/cupboard)是一个非常方便的库,但不幸的是它不支持将列表映射到数据库,并且需要手动处理列表.但是处理它们的方法是什么?

android android-sqlite

5
推荐指数
1
解决办法
1856
查看次数

如何从数据库加载所有字段并使用GreenDao对结果进行排序?

我想用greendao从sqlite数据库加载所有实体并对结果进行排序.

我可以使用loadAll加载所有实体,但这并不能保证对结果列表的排序.

android android-sqlite greendao

5
推荐指数
1
解决办法
3047
查看次数

Android:CSV数据库与SQLite数据库

CSV数据库与Android中的SQLite数据库相比如何?

查看StackOverflow上的其他问题,并阅读Android Developer Documentation,我看到SQLite数据库的使用频率远高于从CSV文件中读取数据.还有一些问题,用户希望将CSV文件导入SQLite数据库(例如,此问题或此问题).使用SQLite而不是CSV有优势吗?

我尝试过使用CSV和SQLite一点点,在性能方面我没有看到很大的区别,但如果我在这里错了,请纠正我.
据我所知,有不同的读取CSV文件的方法,我打开并使用BufferedReader类似的方式读取它:

BufferedReader reader = 
        new BufferedReader(new InputStreamReader(context.getAssets().open(fileName)));
Run Code Online (Sandbox Code Playgroud)

SQLite数据库以通常的方式打开:

SQLiteDatabase db = helper.getReadableDatabase();
Run Code Online (Sandbox Code Playgroud)

我不太确定功能上的差异,虽然我假设SQLite更容易管理和过滤,这就是我问这个问题的原因.

总结一下:

  • 在性能方面,两者中哪一个更快?
  • SQLite(或CSV)是否具有其他功能,而不是其他功能,特别是在Android中(因为我知道Android有自己的SQLiteDatabase类?
  • 为什么SQLite的使用远远超过CSV数据库(即读取和过滤CSV文件)?

编辑:

为了澄清,我知道CSV文件只是一个用逗号分隔值的文件,即不是作为SQL数据库的"数据库".但是,我仍然可以将CSV文件用作一种数据库,其中逗号分隔值表示不同的列,也可以通过检查特定列是否与特定值匹配来过滤.所以我问哪个更好从中读取数据.

csv android android-sqlite android-database

5
推荐指数
0
解决办法
2210
查看次数

如何使用除主键之外的源属性在GreenDAO中进行多对多关系查询?

假设我们有以下实体:项目:

class Item {
...
    @Index(unique=true)
    private String guid;
...
    @ToMany
    @JoinEntity(entity = JoinItemsWithTags.class, sourceProperty = "itemGuid", targetProperty = "tagName")
    private List<Tag> tagsWithThisItem;
    ...
}
Run Code Online (Sandbox Code Playgroud)

标签:

class Tag {
    @Id
    private Long localId;
    @Index(unique = true)
    private String name;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我们需要加入他们.这是我的连接实体类:

@Entity(nameInDb = "item_tag_relations")
class JoinItemsWithTags {
    @Id
    private Long id;
    private String itemGuid;
    private String tagName;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想使用标记名称作为连接属性而不是Long id,因为在与服务器同步时更容易支持一致性.但是当前Item类中的标签getter总是返回一个空列表.我查看了日志并找到了在getter中内部使用的生成查询:

SELECT * <<-- there were a long sequence of fields
FROM "tags" T  JOIN item_tag_relations J1 
ON T."_id"=J1."TAG_NAME" …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite greendao greendao3

5
推荐指数
0
解决办法
186
查看次数

检查会议室数据库中的实体是否为空

如何使用Room Persistence Library检测表是否没有条目?我找不到有关如何解决此问题的任何信息。

android android-sqlite android-room android-architecture-components

5
推荐指数
1
解决办法
4199
查看次数

Android Room:如何迁移列重命名?

问题

我的应用崩溃了,因为我没有正确处理迁移。我正在寻找一种迁移表中1列名称的解决方案。

在我的项目中,我有一个名为“ content ” 的房间表,其双人间属性为“ archivedCount ”。在该应用程序的最新版本中,属性archivedCount属性重命名为dismissCount,仍为Double类型。

原始内容模型

@Entity(tableName = "content")
data class Content(@PrimaryKey var id: String, var archiveCount: Double) : Parcelable {...}
Run Code Online (Sandbox Code Playgroud)

新内容模型

@Entity(tableName = "content")
data class Content(@PrimaryKey var id: String, var dismissCount: Double) : Parcelable {...}
Run Code Online (Sandbox Code Playgroud)

尝试的解决方案

阅读了Google Developer Advocate的解释《用Room进行迁移》后,我尝试了在文章的“ 使用复杂的模式进行迁移 ”一节中概述的解决方案,该过程包括复制原始表,删除旧表,然后重命名新创建的表。

使用下面的以下方法,在此行上会出现运行时错误:database.execSQL("INSERT INTO content_new (id, dismissCount) SELECT id, archiveCount FROM users");因为我已经清除了应用程序的缓存,所以旧表不再存在。

是否可以在不重新创建整个表的情况下更新单个列?

static final Migration MIGRATION_1_2 = new Migration(1, 2) { …
Run Code Online (Sandbox Code Playgroud)

sql android android-sqlite android-room

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