标签: android-sqlite

通过ContentValues将时间戳插入数据库

在Android中,是否可以使用ContentValues?将时间戳插入数据库?当我尝试使用以下内容添加它时:

ContentValues args = new ContentValues();       
args.put(MY_DATE, my_date);
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,告诉我my_date需要成为一个String.有关如何实现这一目标的任何建议?

java android timestamp android-sqlite

11
推荐指数
1
解决办法
7601
查看次数

如何提高Android的SQLite数据库的性能

stackoverflow上有关于这个主题的问题很少,但我没有得到正确的答案.我对平面文件的性能有一些疑问,使用平面文件而不是SQLite更好吗?

我获取了Android的性能统计数据SQLite.

我有一个表有21列的性能统计信息

任何人都可以建议如何减少这个插入时间.

Records  Write time in ms   Read time in ms
1000      67813                   608
1000      66340                   604
1000      64359                   609
10000     679837                  5159
10000     618062                  5110
10000     644638                  5729
10000     646878                  5890
Run Code Online (Sandbox Code Playgroud)

Flat file 没有时间而不是 SQLite

所以有人请建议我如何为SQLite改善这段时间.

我使用简单database open insert using ContentValues和数据库关闭.

请告诉我一些如何改进这些统计数据的方法.

使用下面的答案后更新了性能统计数据.我想提高这些性能.

Records    Writetime in ms         Readtime in ms   
1000        1645                       530          
1000        2497                       672          
1000        3143                       610          
10000       16356                     5243          
10000       14006                     5122          
10000       13158                     5002          
10000       14828                     5234          
100000      125525 …
Run Code Online (Sandbox Code Playgroud)

android android-sqlite

11
推荐指数
1
解决办法
4580
查看次数

何时调用OnUpgrade以及如何获取oldVersion参数?

我正在为我当前的应用程序进行更新.我的应用程序使用SQLite DB,到目前为止我的版本1.我将需要在第二个版本中更改/引入新表.我做了我的研究,我发现要做到这一点,最好的方法是使用switch(case)语句,我以一种简化的方式对db进行更新.

我的问题是,android如何知道什么是旧版本onUpgrade().事实上,什么时候被召唤?.

因此,对于第一次下载我更新的应用程序的用户,我认为onUpgrade()不会被调用!android怎么会知道什么时候不打电话onUpgrade()

请为我澄清一下.我想提交我的第一个更新,我不想失去我辛苦赚来的用户:)

android android-sqlite

11
推荐指数
2
解决办法
7875
查看次数

如何在Android上的Play商店上传我的应用程序的新版本之前测试升级sqlite数据库

我发现问题在更新应用版本后,在我上传的应用程序中找不到这样的表"table_name".我在测试后出来我只是在将旧版本的应用程序升级到新版本的应用程序之后才遇到此问题

我所实施的内容

我已经在onUpgrade()方法中完成了代码,并且还在构造函数中升级了db版本,但我无法在设备中对其进行测试.

步骤1) 将版本代码1增加到2

public databasehelper(Context context) {

        super(context, DATABASE_NAME, null, 2);
        this.myContext = context;
        try {
            createDataBase();
            openDataBase();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
Run Code Online (Sandbox Code Playgroud)

步骤2)将新表添加到onUpgrade()方法中

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        Log.e("onUpgrade db", ">>>>called");
        switch (oldVersion) {
        case 1:
            db.execSQL(DATABASE_CREATE_notification_counter);
            Log.e("db version", ">>>"+oldVersion);
            // we want both updates, so no break statement here...
        case 2:
            Log.e("db version", ">>>"+oldVersion);
                  // I removed onCreate() method from here because new version will …
Run Code Online (Sandbox Code Playgroud)

java database sqlite android android-sqlite

11
推荐指数
1
解决办法
7700
查看次数

ActiveAndroid Update()查询

我正在尝试使用ActiveAndroid对列进行批量更新.这是我的代码:

new Update(SomeModel.class).set("Enabled = 0").execute();
Run Code Online (Sandbox Code Playgroud)

但是我得到了一个StackOverflowError.(编辑:我的不好,错误是在其他地方).有谁知道如何执行Update()查询?它在ActiveAndroid的wiki中没有说什么.

编辑:

这个语法是正确的:

new Update(SomeModel.class)
  .set("Enabled = 0")
  .where("Account = ?", account.getId())
  .execute();
Run Code Online (Sandbox Code Playgroud)

where如果不需要,您可以跳过.

android activeandroid android-sqlite

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

在sqlite中创建多个表的问题

我正在使用以下代码在数据库中创建多个表.但是,我不明白为什么会出现这个问题.

private static final String TABLE_SMSFilter = "SMSFilter";


public void onCreate(SQLiteDatabase db)
    {
        Log.d("Test", "Control is in Oncreate()");
        String CREATE_SMSSSCHEDULE_TABLE = "CREATE TABLE " + TABLE_SMSSchedule
                + "(" + KEY_ID + " INTEGER PRIMARY KEY autoincrement,"
                + KEY_NUMBER + " TEXT)";

        String CREATE_PROFILE_SCHEDULE_TABLE = "CREATE TABLE "
                + TABLE_ProfileSchedule + "(" + ProfileSchedule_ID
                + " INTEGER PRIMARY KEY autoincrement,"
                + ProfileSchedule_NUMBER + " TEXT, "
                + ProfileSchedule_ProfileMode + " TEXT,"
                + ProfileSchedule_CalendarID + "INTEGER)";

        String CREATE_SMS_FILTER_TABLE = "CREATE TABLE " …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

10
推荐指数
1
解决办法
3188
查看次数

使用CONFLICT_REPLACE插入时,SQLiteException"无法提交 - 没有事务处于活动状态"

我在更新数据库时遇到了一些麻烦.

这是日志:

12-02 16:18:57.502: D/Data Update(21218): Start updating databases
12-02 16:18:57.502: D/Data Update(21218): update size: 5
12-02 16:18:57.502: D/Data Update(21218): updating table cemeteries
12-02 14:28:51.877: I/SqliteDatabaseCpp(18826): sqlite returned: error code = 1802, msg = statement aborts at 13: [INSERT OR REPLACE  INTO cemeteries(id,name) VALUES (?,?)] , db=/data/data/de.l_one.app.shaufelv14/databases/poidatabase
12-02 14:28:51.877: E/SQLiteStatementCpp(18826): native_execute (step): errno = 2, error message = No such file or directory, handle = 0xdc0b70
12-02 14:28:51.877: I/SqliteDatabaseCpp(18826): sqlite returned: error code = 1, msg = statement aborts at …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

10
推荐指数
1
解决办法
7134
查看次数

如何在使用SQLiteOpenHelper时实现SQLCipher

我试图通过在Android应用程序中已经存在且正常运行的数据库设置中实现加密来保护一些合理的数据.

我试着按照这个教程(http://sqlcipher.net/sqlcipher-for-android/)浏览了很多foruns,包括用于Cipher的google组.但是,我仍然不清楚SQLCipher如何工作以及如何调整我的代码以满足我的需求.

我下面这个实现的android系统数据库:http://www.vogella.com/articles/AndroidSQLite/#databasetutorial_database,这意味着我有SQLiteOpenHelper类的扩展和另一个类存储CRUD方法.

在这种情况下我应该如何使用SQLCipher?我应该在哪里定义密码?我应该在哪里使用loadLibs(上下文)?只在主要活动中?或者在访问数据库的每个活动中?

我觉得我差不多了,我只需要最后的推动来解决这个问题:P提前谢谢!

sqlite android android-sqlite

10
推荐指数
1
解决办法
7223
查看次数

GROUP BY子句用于获取sqlite中逗号分隔的值

我的表结构是这样的,使用sqlite3

           CREATE TABLE enghindi (eng TEXT,hindi TEXT)
Run Code Online (Sandbox Code Playgroud)

我有一个名为enghindi的表,其中有两列名为hindi,eng,我想合并eng列的记录,也可以用逗号分隔hindi单词

看下面的表看起来像

在此输入图像描述

我想在下面看到这样的

在此输入图像描述

我想用sqlite3查询做到这一点

mysql sql sqlite android-sqlite

10
推荐指数
1
解决办法
5469
查看次数

Android SQLite:尝试重新打开已经关闭的对象

我正在尝试根据ISBN从我的库存表中获取某些图书数据.但是,我收到一个错误:"尝试重新打开已经关闭的对象".只有当我单击一个listView对象,转到另一个屏幕,通过"finish()"返回到此页面,然后尝试单击另一个listView对象时,才会出现该错误.我提出的String searchEntries[] = InventoryAdapter.getInventoryEntriesByISBN(searchQuery, isbn[position]);onClickListener以前的for循环之前onClickListener和现在的作品.

如果我通过"finish()"从另一个活动返回此活动后尝试getInventoryEntriesByISBN,为什么它不起作用?

SearchResultsScreen发生错误:

String searchEntries[] = InventoryAdapter.getInventoryEntriesByISBN(searchQuery, isbn[position]);
Run Code Online (Sandbox Code Playgroud)

并通过扩展,发生在InventoryAdapter:

Cursor cursor = db.rawQuery(query, new String[] {ISBN});
Run Code Online (Sandbox Code Playgroud)

SearchResultsScreen.java

// Set up search array
    for(int i = 0; i < isbn.length; i++)
    {
        searchArray.add(new InventoryItem(isbn[i], InventoryAdapter.getTitleAndAuthorByISBN(isbn[i])));
    }
    Toast.makeText(getApplicationContext(), "searchArray.size()="+searchArray.size(), Toast.LENGTH_LONG).show();

    // add data in custom adapter
    adapter = new CustomAdapter(this, R.layout.list, searchArray);
    ListView dataList = (ListView) findViewById(R.id.list);
    dataList.setAdapter(adapter);

    // On Click ========================================================
    dataList.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, …
Run Code Online (Sandbox Code Playgroud)

android android-cursor android-sqlite

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