Articles of SQLite

用于删除行的SQLite触发器expression式

我有2个表A(id,Name),B(id,fid,Name),其中A.id = B.fid ,我的要求是我想删除B中的行,只要A中的行删除 这是我试过的查询,但它给了我B附近的错误.. Create Trigger Delete_B_trigger After Delete on A For each row Begin Delete from B where fid = id; End

如何在SQLite数据库Varchar字段中插入双引号(“)?

我正在尝试插入带有此字段的表TITLE varchar(200) NOT NULL下一句: INSERT OR IGNORE INTO EXAMPLETABLE VALUES (“1-Preludi \”Obrint Pas 2011\””, … 问题是SQLite误解了“逃避问题,我不知道如何在我的Android程序中解决问题(也许是字符代码?)”。

如何使用数据库编写Robolectric(2.3)测试

由于Robolectic最后一次发布到版本2.3,它写的是( https://github.com/robolectric/robolectric/releases ): Robolectric现在使用SQLite的实际实现,而不是阴影和假货的集合。 现在可以编写测试来validation真实的数据库行为。 我还没有find任何“如何”文档。 我想知道如何使用SQLiteDatabase查询在Activity上实现测试。 我应该把.db文件放在哪里,以便测试使用它。

如何在Android Studio上的Sqlite数据库中查看插入的数据

你能不能帮我解决这个问题。 我正在为我的Sqlite数据库插入值。 如何查看或查看插入的数据。 是否有任何工具或其他技术来显示数据?

需要一个好的方法来改变(SQLite)列数据types

我有一个带’int’列的表。 在软件升级期间,我想将其更改为“长”数据types。 似乎SQLite没有提供更改/修改列属性的选项(在alter语句中)。 由于我想进行升级,因此该表可能包含用户不应丢失的数据。 所以请建议我一个很好的方法来更改列数据types属性而不会丢失数据。 搜索链接中建议的一种方法是创建临时表,从现有表中复制记录,删除现有表,以及重命名临时表。 我怀疑这是否有效。 感谢您的帮助! 问候 Vivek Ragunathan

尝试为GreenDAO运行DaoGenerator时出现NoClassDefFoundError

我有一个Android项目,使用Android Studio 2.3,它使用GreenDAO生成与SQLite数据库交互的类。 DaoGenerator项目之前总是工作……但今天我只需要向实体添加2列/属性,每当我尝试运行生成器项目时,我都会收到以下错误: Exception in thread “main” java.lang.NoClassDefFoundError: org/greenrobot/greendao/generator/Schema at com.company.daogenerator.ProjectDaoGenerator.main(ProjectDaoGenerator.java:20) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Caused by: java.lang.ClassNotFoundException: org.greenrobot.greendao.generator.Schema at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 我在我的应用程序的Gradle文件中使用GreenDAO 3.2.0: compile ‘org.greenrobot:greendao:3.2.0’ 此外,在DaoGenerator的Gradle文件中: apply plugin: ‘java’ dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) compile ‘org.greenrobot:greendao-generator:3.2.0’ } 我的ProjectDaoGenerator.java文件: package […]

SQLiteDatabase close()函数在多个线程时导致NullPointerException

我在我的项目中发现Android上的SQLiteDatabase实现中的close()函数在运行打开数据库,插入数据然后关闭数据库的多个线程时抛出NullPointerException。 除非我在插入数据库后允许每个线程关闭(),否则一切都会顺利运行。 以下是其中一个写入线程可能看起来像的示例 ContentValues values = new ContentValues(); values.put(CallDetailsStorageConstants.COLUMN_NAME_REMOTE_NAME_IDX, (String) “”); values.put(CallDetailsStorageConstants.COLUMN_NAME_REMOTE_MEETINGID_IDX, (String) “”); CalculonDatabase callDetailsOpenHelper = CalculonDatabase.getInstance(mContext); SQLiteDatabase dbw = callDetailsOpenHelper.getWritableDatabase(); long rowid = 0; try { rowid = dbw.insertWithOnConflict(CallDetailsTable.CALL_DETAILS_TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_REPLACE); } catch (SQLiteConstraintException e) { e.printStackTrace(); } finally { dbw.close(); } 你可以看到最后调用close()。 运行多个线程时,我得到此exception。 11-03 03:39:26.128: E/AndroidRuntime(977): FATAL EXCEPTION: Thread-17 11-03 03:39:26.128: […]

ORMLite选择不同的字段

我有一个SQLite表(在Android上)有很多字段,但某些字段是重复/非规范化的。 我想选择一组不同的数据并将它们用作实际对象。 例 书桌 title summary author Little Johnny A funny kid Johnny Himself Big Johnny A funny adult Johnny Himself 我想从这个列表中提取一位作者(“Johnny Himself”)并希望我能用ORMLite而不是用Java手动完成。

确定SQLite中列的数据types

我正在开发一个Android应用程序,用户可以使用不同的选项来排序来自数据库的显示数据。 目前我传递给Androids query()方法的orderBy字符串如下所示: “LOWER(“+columnName+”) ASC” 这样做的问题是,如果columnName指定的列中的数据types是整数,则在其上调用LOWER()将使其按字母顺序排序,即仅基于最左边的数字,这当然没有任何意义对于数字数据。 因此,如果列的数据types不是整数,我只想应用LOWER()。 我的想法是这样的声明: “CASE WHEN [data type of columnName is integer] THEN “+columnName+” ASC ELSE LOWER(“+columName+”) ASC END” 括号中的部分是我不知道该怎么做的。 SQLite是否提供了确定列数据types的函数?

如何实现ALTER TABLE 的示例

我已经多次问过这个问题而且还得到了一个完整的答案……如何实现ALTER TABLE语句将列添加到数据库中。 有人可以举个例子吗?