Articles of SQLite

什么是com.sec.android.provider。*应用程序?

我知道这不是代码问题。 但是,我尝试处理存储在/data/data/com.sec.android.provider.*目录中的一些数据库。 提供者签名中的“sec”是什么意思? 它取决于制造商吗? 一个例子: call_logs的内容提供者读取Samsung上call_logs中的数据库。 什么读取HTC上相同的内容提供商? 我有点困惑……

编译时,Android SQLiteException“没有这样的表”:INSERT INTO表

代码没有给出这样的表exception。 我读了几乎所有关于这个例外的问题,做了所有的事情。 但它仍然无效。 我找不到问题所在。 有没有人可以帮助我? public class Butcegiris extends Activity { EditText bakici, krediAraba, krediOgrenim, krediTatil, faturaElektrik; EditText faturaSu, faturaInternet, aidat, kaskoSigorta; Spinner yillar,aylar; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.butcegiris); bakici = (EditText) findViewById(R.id.editTextBakici); krediAraba = (EditText) findViewById(R.id.editTextKrediAraba); krediOgrenim = (EditText) findViewById(R.id.editTextOgrenimKredisi); krediTatil = (EditText) findViewById(R.id.editTextTatilKredisi); faturaElektrik = (EditText) findViewById(R.id.editTextFaturaElektrik); faturaSu = (EditText) […]

Android SQLite升级而不会丢失数据

我已经成功创建了一个SQLite数据库,它运行正常。 但是,当调用onUpgrade方法时,我希望这样做而不会丢失数据。 我正在开发的应用程序是一个测验应用程序。 简单地说,当调用onCreate方法时,我使用问题,答案等创建和预填充数据库。最后一列是他们是否将问题设置为collections夹。 我想要做的是,当调用onUpgrade方法时,我想暂时保存那一列,删除整个数据库,使用我对旧问题进行的任何编辑重新创建它,然后重新添加任何新问题。 – 回复他们设置为collections的问题。 所以我试过的一个选项如下: db.execSQL(“ALTER TABLE quiz RENAME TO temp_quiz”); onCreate(db); db.execSQL(“INSERT INTO quiz (favouries) SELECT favourites FROM temp_quiz”); db.execSQL(“DROP TABLE IF EXISTS temp_quiz”); 但是,由于INSERT INTO只添加新行而不是替换现有行,因此无效。 我也尝试过REPLACE INTO,INSERT或REPLACE INTO和 db.execSQL(“INSERT INTO quiz (_id, favouries) SELECT _id, favourites FROM temp_quiz”); 其中没有用。 目前我确实通过更改表的名称,调用onCreate(db)方法然后设置一个游标来读取每一行并使用db.update()方法来设置工作,如下所示: int place = 1; int TOTAL_NUMBER_OF_ROWS = 500; while (place […]

将SQLite数据库导出到Android中的XML文件

我知道这是可能的,但我不确定从哪里开始。 有没有人能够做到这一点? 谢谢。

可以从Android SQLiteConstraintException获取特定的错误详细信息?

我对某些数据收到以下错误,概念很清楚: android.database.sqlite.SQLiteConstraintException:FOREIGN KEY约束失败(代码787) 但是,这并没有帮助我find哪个特定记录具有无效的FK。 而不是颠覆我的代码并尝试用新事务隔离每个插入,是否有任何方法可以打开(或提取)日志,使用有用的详细信息,例如有问题的表,甚至导致问题的FK值? 此外,我正在使用SqlBrite,并已启用调试日志记录(只记录操作,我仍然没有获得有关错误的更多信息) 更新:这是我自己的代码上面的所有logcat; 本质上是在尝试关闭先前打开的事务(BriteDatabase.Transaction)时捕获的exception(BriteDatabase.Transaction对象是一个新的添加;我只是从SqlBrite 0.1.0迁移到0.4.1)。 android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787) at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method) at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:555) at android.database.sqlite.SQLiteSession.endTransactionUnchecked(SQLiteSession.java:437) at android.database.sqlite.SQLiteSession.endTransaction(SQLiteSession.java:401) at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:522) at com.squareup.sqlbrite.BriteDatabase$1.end(BriteDatabase.java:85)

window.openDatabase()和window.sqlitePlugin.openDatabase()函数之间的区别?

使用Cordova版本3.x和Android版本2.x到4.x. 我想知道: 我的理解是正确的,默认情况下所有的Android设备都有一个用于创建sqlite数据库的sqlite程序/接口吗? 上述数据库函数调用是否都在设备中创建了一个sqlite数据库? 如果上面的答案为否 ,那么上述函数调用创建的数据库types是什么? 如果答案是肯定的 ,那么window.sqlite.openDatabase()函数是否包含在window.openDatabase()周围? 调用创建的数据库是否持久? 也就是说,关闭并重新打开cordova打包应用程序后,数据是否可用? 是否有上述两种方法可以创建的最大数据库大小?

Android Room FOREIGN KEY约束失败

我试图在Android SQLite中设计和实现文件夹树结构,借助Google在I / O 2017中引入的Android Room Persistence(一种ORM)。在我的设计中,文件夹可以包含其他文件夹和文件。 这是我的文件夹和文件的代码: 文件模型: @Entity(tableName = “files”, foreignKeys = @ForeignKey(entity = Folder.class, parentColumns = “id”, childColumns = “parent_id”, onDelete = CASCADE)) public class File { @PrimaryKey(autoGenerate = true) private int id; private String title; private Date creationDate; @ColumnInfo(name = “parent_id”) public int parentId; //here setters and getters skipped but exist […]

Android 2.1和2.2之间的SQLite差异

我有一个Android应用程序,到目前为止我所有的测试都在我的Froyo手机上。 我刚开始在模拟器中对1.6和2.1进行测试,它在启动时崩溃了。 它在我的一个视图中找不到列。 05-17 23:31:31.446: ERROR/AndroidRuntime(198): Caused by: android.database.sqlite.SQLiteException: no such column: categoryTable.currentBal: , while compiling: SELECT SUM(categoryTable.currentBal) FROM catDisplayTable WHERE masterCategoryName != “__Hidden__” 视图的架构如下: CREATE VIEW catDisplayTable AS SELECT categoryTable._id, categoryTable.name, categoryTable.currentBal, categoryTable.sequence, categoryTable.note, masterCategoryTable.name AS masterCategoryName FROM categoryTable LEFT OUTER JOIN masterCategoryTable ON categoryTable.masterCategoryId = masterCategoryTable._id; 使用adb shell连接到各种模拟器实例,我已经确认(1)在所有情况下都有正确的模式,并且(2)在1.6和2.1中,SQLite无法在此视图中find列,即使简单的事情 SELECT categoryTable.name FROM catDisplayTable; 要么 […]

在Android上进行应用升级后如何更新表架构?

我有一个未完成的应用程序,但我想现在解决它的未来更新。 假设我的应用程序已升级,因此在启动时会检测到数据库架构已过时。 因此,每个表必须根据版本号更新到新架构,同时保留所有数据。 我在某处看过,在Android上SQLite数据库有一些版本号和自动更新的东西,但我没有find这个特定问题的例子。 如何在使用SQLite数据库的Android应用程序上实现这一目标? Android SQLite数据库中存储的每个表是否有特定的版本号? 如果是这样,我怎么读它,并用于我的上述目的?

如何在Sqlite Android中实现单词边界?

我想实现以下(全文搜索), SELECT * FROM tablename where columnname REGEXP ‘[[::]]’ 我只对完整文本列中的确切字符串(而不仅仅是单词)感兴趣。 我一直在使用MySQL中的确切SQL,现在将大部分代码迁移到Android应用程序。 但我一直在看各种post,其中提到Android Sqlite不支持REGEXP(例如: link1 , link2 , link3 )。 有没有办法在Android中启用REGEXP? 如果没有上述SQL的替代品? 谢谢, 编辑:目前我在Android中使用REGEXP时收到以下exception, android.database.sqlite.SQLiteException: no such function: REGEXP (code 1):… 我知道我们可以使用GLOB和LIKE(或者甚至可以使用MATCH)。 如何将columnname REGEXP ‘[[::]]’转换为使用GLOB和/或LIKE和/或MATCH ? 解决方案1 :随着@cybersam的帮助,我正在使用(经过一些修改) SELECT * FROM tablename where (columnname GLOB ‘*some string*’ OR columnname GLOB ‘*Some string*’) AND ( ( (columnname […]