Articles of SQLite

Android SQLite查询 – 获取最新的10条记录

我有一个保存在我的Android应用程序中的数据库,想要检索插入数据库的最后10条消息。 我用的时候: Select * from tblmessage DESC limit 10; 它给了我10条消息但是来自TOP 。 但我想要最后 10条消息。 可能吗? 假设整个表数据是 – 1,2,3,4,5….30 我select * from tblmessage where timestamp desc limit 10写了查询select * from tblmessage where timestamp desc limit 10 它显示30,29,28…21 但我希望序列为 – 21,22,23…30

在外部目录上进行Nexus 9 SQLite文件写入操作的解决方法?

我的团队在Nexus 9上发现了一个错误,我们的应用程序无法使用,因为它无法在外部文件目录上以可写模式访问数据库。 似乎只有在应用程序使用JNI时才会发生,并且只有在代码中不包含arm64-v8a版本时才会发生。 我们目前的理论是,如果不包括arm64-v8a,Nexus 9包含一些替代版本的本机库,以便向后兼容只有armeabi或armeabi-v7a库的应用程序。 似乎某些备用SQLite库中存在一个阻止上述操作的错误。 有没有人find解决此问题的方法? 重新构建arm64中的所有本地库是我们当前的轨道和最完整的解决方案,但这需要我们的时间(我们的一些库是外部的),如果可能的话,我们希望更快地解决我们的Nexus 9用户的应用程序。 您可以通过这个简单的示例项目轻松地看到此问题(您需要最新的Android NDK )。 将以下文件添加到项目中。 如果您没有安装最新的Android NDK ,请安装它。 在项目目录中运行ndk-build 。 刷新,构建,安装和运行。 如果更改Android.mk或Application.mk,请在再次运行ndk-build之前删除libs和obj文件夹来清理项目。 您还需要在每次ndk-build之后手动刷新项目。 请注意,Nexus 9上的“损坏”构建仍然适用于内部文件,但不适用于外部文件。 SRC / COM /示例/ dbtester / DBTesterActivity.java package com.example.dbtester; import java.io.File; import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class DBTesterActivity […]

关于Android自动删除损坏的SQLite文件这一事实可以做些什么?

当Android打开SQLite文件并且文件损坏时,Android 会删除该文件。 虽然听起来很令人惊讶,但这种行为在Android源代码中清晰地实现,导致惊愕和Android问题 。 无论如何,作为应用程序开发人员,我们只需处理它。 打开SQLite文件时最好的策略是什么? 损坏的文件实际上通常是可以恢复的,因此我们承担不起丢失其中一个损坏文件的风险。 在打开之前创建备份是非常耗时的,并且会使应用程序启动非常慢,所以任何更聪明的东西都会非常感激。

什么是在SQLite游标中使用moveToFirst()

我是一个编程新手,我在互联网上find了这段代码,它工作正常 Cursor c=db.query(DataBase.TB_NAME, new String[] {DataBase.KEY_ROWID,DataBase.KEY_RATE}, DataBase.KEY_ROWID+”= 1″, null, null, null, null); if(c!=null) { c.moveToFirst(); } 但我无法理解使用的 if(c!=null) { c.moveToFirst(); } 部分。 它究竟做了什么,如果我删除了 if(c!=null) { c.moveToFirst(); } 部分,代码不起作用。

Android – SQLite数据库存储在哪里

可能重复: Android模拟器在哪里存储SQLite数据库? 我正在使用SQLite和phonegap来创建一个多平台应用程序。 但是,我遇到了一个问题。 我现在正在寻找phonegap存储名为0000000000000001.db和database.db的数据库文件的位置 我已经在iPhone上find了这个,但似乎无法获得Android的位置。 我目前正在运行模拟器和实际设备(ARCHOS)。

sqlite:看起来像moveToNext工作,不需要moveToFirst

在创建标准SQLite游标之后,我使用以下命令迭代条目: while (cursor.moveToNext()) { } 正确处理所有行。 我读过的所有文档都说明你需要发出moveToFirst()以确保你指向光标集的第一个条目。 这是否有效,即使它不应该,另一个版本可能没有相同的处理?

SQLiteConstraintException:错误代码19:约束失败

我在SQLite数据库中插入时遇到exception 以下代码给出了例外情况: mDbHelper.createUser(“pablo”,”a”,”a”,”a”,”a”); 来自mDbHelper(MyDbAdapter)的代码: private static final String USER_TABLE_CREATE = “CREATE TABLE user ( email varchar, password varchar, fullName varchar, mobilePhone varchar, mobileOperatingSystem varchar, PRIMARY KEY (email))”; public long createUser(String email, String password, String fullName, String mobilePhone, String mobileOperatingSystem) { ContentValues initialValues = new ContentValues(); initialValues.put(“email”,email); initialValues.put(“password”,password); initialValues.put(“fullName”,fullName); initialValues.put(“mobilePhone”,mobilePhone); initialValues.put(“mobileOperatingSystem”,mobileOperatingSystem); return mDb.insert(“user”, null, initialValues); } […]

是否可以在android数据库的文本字段中应用主键

我创建了一个简单的表,其中包含人员的姓名和电子邮件ID。 当我给出这样的创建查询时: “create table contacts (name text not null, email text primary key not null);” 但这不起作用。 我在运行时没有收到任何exception或错误,也没有主键正常工作。 在使用SQLite浏览器浏览表时,我观察到只有四种数据types: 是否可以仅对整数应用主键? 如果我想在文本字段上使用主键,情况如何。 谢谢。 这是我使用的代码: public class DBAdapter { public static final String KEY_ROWID = “_id”; public static final String KEY_NAME = “name”; public static final String KEY_EMAIL = “email”; private static final String TAG = “DBAdapter”; private […]

在Android Studio中查看设备上的SQLite数据库

我使用的是最新版本的Android Studio。 当我在模拟器上运行我的应用程序时,我可以通过以下方式查看我的数据库: tools -> Android Device Monitor -> clicking on the emulator in the left panel -> file explorer -> data -> data -> com.project-name 但是在设备上运行我的应用程序时,此选项不可用。 我检查过相关问题: Android – 在设备上查看SQLite数据库? 这里投票最多的答案建议将数据库复制到SD卡,甚至是eclipse。 在Android设备上访问sqlite数据库 这些问题来自2011年和2010年。我可以使用任何插件或其他外部工具吗?

getWritableDatabase()VS getReadableDatabase()

我正在创建一个数据库帮助程序类,对于其中的一些方法,我只查询数据库和我写的其他人。 我的理解是这两种方法都会打开数据库并让程序只读或写入数据库。 对于查询语句,值得使用getReadableDatabase(),或者两种方法之间的性能差异很小。 谢谢你的时间。