标签: android-sqlite

如何在预先填充的数据库中使用Room Persistence Library?

我想将Room与预先填充的数据库一起使用,但我无法理解如何告诉Room在哪里可以找到我的数据库.

我现在把它放进去src/main/assets/databases,当我为Room数据库创建实例时,我就是这样创建的:

Room.databaseBuilder(
    getApplicationContext(),
    AppDatabase.class,
    "justintrain.db"
)
.allowMainThreadQueries()
.build();
Run Code Online (Sandbox Code Playgroud)

这样,我认为它每次创建一个新的数据库,或者不管怎样,它不使用预先填充的数据库.

我怎样才能找到我的数据库?

android android-sqlite android-room

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

Android SQLite插入或更新

从文档中可以看出,插入或更新的语法是:INSERT OR REPLACE INTO <table> (<columns>) VALUES (<values>),我的问题是有没有合并以下的函数?

public long insert (String table, String nullColumnHack, ContentValues values) 
public int update (String table, ContentValues values, String whereClause, String[] whereArgs)
Run Code Online (Sandbox Code Playgroud)

或者必须使用准备好的SQL语句和rawQuery来完成?

在Android中插入或更新的最佳做法是什么?

android android-sqlite

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

如何使用Android在sqlite中获取行数?

我正在创建任务管理器.我有任务列表,我希望当我点击特定的任务列表名称时,如果它为空,那么它继续添加任务活动,但如果它有2或3个任务,那么它会以列表形式向我显示这些任务.

我想在列表中计算.我的数据库查询如下:

public Cursor getTaskCount(long tasklist_Id) {

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor= db.rawQuery("SELECT COUNT (*) FROM " + TABLE_TODOTASK + " WHERE " + KEY_TASK_TASKLISTID + "=?",
             new String[] { String.valueOf(tasklist_Id) });
    if(cursor!=null && cursor.getCount()!=0)
          cursor.moveToNext();
    return cursor;
}    
Run Code Online (Sandbox Code Playgroud)

在我的活动中:

list_tasklistname.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0,
            android.view.View v, int position, long id) {
                db = new TodoTask_Database(getApplicationContext());
                Cursor c = db.getTaskCount(id);
                System.out.println(c.getCount());
                if(c.getCount()>0) {    
                System.out.println(c);
                Intent taskListID = new Intent(getApplicationContext(), AddTask_List.class);
                task = adapter.getItem(position);
                int taskList_id = …
Run Code Online (Sandbox Code Playgroud)

android onitemclicklistener android-sqlite

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

如果数据库大小超过2千兆字节,SQLite性能会降低吗?

去年,当我在他们的网站上检查SQLite时,建议的SQLite数据库大小为2千兆字节.但现在,我再也找不到这个建议了.

那么有没有人试图使用一个大于2千兆字节的SQLite数据库使用它的最新版本?SQLite的表现如何?

PS:我想创建一个移动应用程序,需要在本地工作的大数据库(例如存储维基百科文章).

sqlite android-sqlite

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

Android SQLiteOpenHelper:为什么不调用onCreate()方法?

我正在尝试制作我的第一款Android应用.我注意到,SQLiteOpenHelper.onCreate()如果数据库不存在,则不会调用该方法来创建表.但是,onCreate()即使我尝试调试,该方法也无法正常工作.

请查看下面的代码,并给我任何建议.任何帮助将不胜感激.

public class NameToPinyinActivity extends Activity {

    DatabaseOpenHelper helper = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.nametopinyin);

        Button searchButton = (Button) findViewById(R.id.search);
        searchButton.setOnClickListener(new ButtonClickListener());

        helper = new DatabaseOpenHelper(NameToPinyinActivity.this);
    }

public class DatabaseOpenHelper extends SQLiteOpenHelper {

    /** DB Name */
    private static final String DB_NAME = "pinyin";

    /** CREATE TABLE SQL */
    private static final String CREATE_TABLE_SQL = "CREATE TABLE UNICODE_PINYIN"
            + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, "
            + "UNICODE TEXT NOT NULL, PINYIN …
Run Code Online (Sandbox Code Playgroud)

java android android-sqlite

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

在SQLiteDatabase.query()中使用String [] selectionArgs

如何使用String[] selectionArgsSQLiteDatabase.query()?我希望我可以把它设置为null,因为我没有用它.我只是尝试将数据库中的整个未排序表加载到Cursor.有关如何实现这一目标的任何建议?

android android-cursor android-sqlite

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

如何将Room Persistence Library导入Android项目

我最近看到Google I/O Room Persistence Library上宣布的新功能与Android上的Sqlite数据库一起使用.我一直在寻找官方文档,我没有找到我应该导入到我的Android项目上的gradle文件的依赖项.有人可以帮个忙吗?

sqlite android android-sqlite android-room

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

卸载Android应用程序时,数据库不会删除

我有两个主要问题.

  1. 卸载应用程序时,数据库不会删除.
  2. 在应用程序不稳定时,下载的文件不会被删除.

我的android应用程序中有一个数据库.我用java创建它

class as follows.

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

public DataBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
    super(context, name, factory, version, errorHandler);
}

@Override
public void onCreate(SQLiteDatabase db) {
    // creating required tables
    db.execSQL(CREATE_TABLE_QUOTES);
    db.execSQL(CREATE_TABLE_FILTERS);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // on upgrade drop older tables
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUOTES);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUOTES);
    // create new …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-file android-sqlite android-database

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

使用外键创建表的SQLite语法

我正在创建一个包含外键引用的表.我想知道所需的语法.大多数情况下,我见过以下内容(来自http://www.sqlite.org/foreignkeys.html#fk_basics):

CREATE TABLE artist(  
  artistid    INTEGER PRIMARY KEY,  
  artistname  TEXT  
);  
CREATE TABLE track(  
  trackid     INTEGER,   
  trackname   TEXT,  
  trackartist INTEGER,  
  FOREIGN KEY(trackartist) REFERENCES artist(artistid)  
);
Run Code Online (Sandbox Code Playgroud)

但是,从同一个站点(http://www.sqlite.org/foreignkeys.html#fk_actions)我看到:

CREATE TABLE artist(  
  artistid    INTEGER PRIMARY KEY,  
  artistname  TEXT  
);  
CREATE TABLE track(  
  trackid     INTEGER,  
  trackname   TEXT,   
  trackartist INTEGER REFERENCES artist(artistid) ON UPDATE CASCADE  
);
Run Code Online (Sandbox Code Playgroud)

后一种语法更简洁,但我想知道结果是否有所不同(除了ON UPDATE CASCADE,当然有效果;我只包括它,因为我完全从引用的网站复制代码,因为我不知道上面的语法只在制作这样的规范时才适用).我在Android工作,如果重要的话.

sqlite android-sqlite

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

SQLite数据库在<table_name>(列)上提供警告自动索引升级Android L后

我已经使用Android 5.0 Lollipop升级了我的Nexus 7,在此之前我的应用程序与SQLite数据库配合得很好但是现在每当我执行任何类型的查询时,它都会给我发送log cat错误,例如:

12-09 12:37:04.942: E/SQLiteLog(13041): (284) automatic index on area(server_id)
12-09 12:37:04.942: E/SQLiteLog(13041): (284) automatic index on account(area_id)
12-09 12:37:04.942: E/SQLiteLog(13041): (284) automatic index on staff_visit(account_id)
12-09 12:37:04.942: E/SQLiteLog(13041): (284) automatic index on ordertab(account_id)
12-09 12:37:04.960: E/SQLiteLog(13041): (284) automatic index on area(server_id)
12-09 12:37:04.960: E/SQLiteLog(13041): (284) automatic index on account(area_id)
12-09 12:37:04.960: E/SQLiteLog(13041): (284) automatic index on staff_visit(account_id)
12-09 12:37:04.960: E/SQLiteLog(13041): (284) automatic index on ordertab(account_id)
12-09 12:37:04.978: E/SQLiteLog(13041): (284) automatic index on …
Run Code Online (Sandbox Code Playgroud)

android android-logcat android-sqlite android-5.0-lollipop

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