Articles of SQLite

Android SQLite – Cursor和ContentValues

有没有办法从SQLite获取ContentValues对象? 我们可以在DB中插入ContentValues非常有用,从那里获取CV应该更有用。

从sqlite数据库Android获取最后插入的值

我试图从Android中的sqlite数据库中获取最后一个插入的rowid。 我已经阅读了很多关于它的post,但是无法让它工作。 这是我的方法: public Cursor getLastId() { return mDb.query(DATABASE_TABLE, new String[] {KEY_WID}, KEY_WID + “=” + MAX(_id), null, null, null, null, null);} 我试过MAX,但我一定是错了。 还有另一种方式吗?

我们可以在不改变APP版本的情况下更新Google Play商店上的APK

任何人都可以告诉我,我可以更换上传到Google Play商店的APK,而无需更改应用版本。 基本上我昨天已经上传了1.0版本的应用程序,今天我想用一些重要的修复程序重新上传APK,并且不想更改版本。

如何在sqlite中删除数据库?

我在android中使用SQLite。 我想删除数据库。 例如: mysql- drop database dbname 如何在SQLite中实现此代码?

Android / SQLite:插入 – 更新表列以保留标识符

目前,我使用以下语句在Android设备上的SQLite数据库中创建表。 CREATE TABLE IF NOT EXISTS ‘locations’ ( ‘_id’ INTEGER PRIMARY KEY AUTOINCREMENT, ‘name’ TEXT, ‘latitude’ REAL, ‘longitude’ REAL, UNIQUE ( ‘latitude’, ‘longitude’ ) ON CONFLICT REPLACE ); 最后的conflict-clause导致在完成具有相同坐标的新插入时删除行。 SQLite文档包含有关conflict-clause的更多信息。 相反,我想保留以前的行,只是更新他们的列。 在Android / SQLite环境中执行此操作的最有效方法是什么? 作为CREATE TABLE语句中的conflict-clause。 作为INSERT触发器。 作为ContentProvider#insert方法中的条件子句。 ……你能想到的更好 我认为在数据库中处理这种冲突更有效。 此外,我发现很难重写ContentProvider#insert方法来考虑插入更新方案。 这是insert方法的代码: public Uri insert(Uri uri, ContentValues values) { final SQLiteDatabase db = mOpenHelper.getWritableDatabase(); long […]

Android Persistence room:“无法弄清楚如何从游标中读取此字段”

我正在尝试使用新的Android Persistence Room Library在两个数据库表之间创建关系。 我查看了文档,并尝试实现https://developer.android.com/reference/android/arch/persistence/room/Relation.html上的示例: @Entity public class User { @PrimaryKey int id; } @Entity public class Pet { @PrimaryKey int id; int userId; String name; } @Dao public interface UserDao { @Query(“SELECT * from User”) public List loadUser(); } @Dao public interface PetDao { @Query(“SELECT * from Pet”) public List loadUserAndPets(); } public class […]

自定义ListView,日期为SectionHeader(使用自定义SimpleCursorAdapter)

我想显示ListView与Date作为SectionHeader。 我有:我使用自定义SimpleCursorAdapter从sqlite数据库显示ListView。 我的自定义SimpleCursorAdapter是: public class DomainAdapter extends SimpleCursorAdapter{ private Cursor dataCursor; private LayoutInflater mInflater; public DomainAdapter(Context context, int layout, Cursor dataCursor, String[] from, int[] to) { super(context, layout, dataCursor, from, to); this.dataCursor = dataCursor; mInflater = LayoutInflater.from(context); } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView […]

Android SQLite和数据库方案上的ORM

我正在寻找一个非常简单的ORM框架,在Android上运行SQLite。 我一直在测试ActiveAndroid,但是没有一个例子能够在Eclipse上构建。 顺便说一下,人们如何在SQLite for Android中实现“多对多”的关系? 您如何反映有关删除行并保证数据库完整性的级联?

Android Room Persistence Library:Upsert

Android的Room持久性库慷慨地包含适用于对象或集合的@Insert和@Update注释。 然而,我有一个用例(包含模型的推送通知)需要UPSERT,因为数据可能存在或可能不存在于数据库中。 Sqlite本身没有upsert,并且在这个SO问题中描述了变通方法。 鉴于那里的解决方案,如何将它们应用于房间? 更具体地说,如何在Room中实现不会破坏任何外键约束的插入或更新? 使用带onConflict = REPLACE的insert将导致onDelete调用该行的任何外键。 在我的情况下,onDelete导致级联,并重新插入一行将导致其他表中的行与外键被删除。 这不是预期的行为。

在SQLite For Android中查询列的最大值

我创建了一个数据库,并提交了数据。 有一列我想find最大的价值。 这是我的数据库适配器中使用的方法: public Cursor getBiggestInTheColumn() { return db.query(DATABASE_TABLE, null, “MAX(price)”, null, null, null, null); } 它应该工作,但当我调用方法时: cursor = dbadp.getBiggestInTheColumn(); 我得到像这样的运行时错误(LogCat): 07-14 12:38:51.852:ERROR / AndroidRuntime(276):引起:android.database.sqlite.SQLiteException:滥用聚合函数MAX():,同时编译:SELECT * FROM花费WHERE MAX(价格) 有任何想法吗? 我怀疑这是由于查询错误,但这是我能想到的最好的。 其他查询运作良好。