Articles of SQLite

调用Rooms inMemoryBuilder方法时,Room Persistence Library运行时exception

按照设置Room余好库的教程时,我在Android设备上测试时遇到此错误。 java.lang.RuntimeException:找不到PackageName .AppDatabase的实现。 AppDatabase_Impl不存在 我知道有一个类似的问题,但问题是由于kotlin gradle问题。 可能重复 测试类: @RunWith(AndroidJUnit4.class) public class LocalDatabaseTest { private PhotoDao mPhotoDao; private AppDatabase mDb; @Before public void createDb() { Context context = InstrumentationRegistry.getTargetContext(); mDb = Room.inMemoryDatabaseBuilder(context.getApplicationContext(), AppDatabase.class).build(); mPhotoDao = mDb.photoDao(); } @After public void closeDb() throws IOException { //mDb.close(); } @Test public void testPreConditions() { assertNotNull(mDb); } 道: @Dao public […]

在Android上的SQLite中查询和使用游标

不确定我是否是唯一感受到这一点的人…… 我发现在android中使用sqlite api完全痛苦的屁股和漂亮的灵魂摧毁。 有没有人得到任何提示/助手让我的生活更轻松? 这是我正在谈论的一个例子。 //create code db.execSQL(“CREATE TABLE ” + CUSTOMER_TABLE_NAME + ” (” + GENERIC_ID_KEY+ ” INTEGER PRIMARY KEY NOT NULL, ” + PHONE_KEY + ” INTEGER NOT NULL, ” + CUSTOMER_NAME_KEY+ ” TEXT NOT NULL, ” + EMAIL_KEY + ” TEXT NOT NULL, ” + ADDRESS_KEY +” TEXT);”); //get code Cursor mCursor […]

数据库未在OnePlus Two中正确复制

我正在创建一个Android应用程序,我正在使用sqlite数据库。 因为我已经在项目的资产文件夹中放置了一个sqlite文件,我在使用下面的代码首次执行应用程序时将此文件复制到手机。 private void copyDataBase() throws IOException { new File(DB_PATH).mkdirs(); InputStream myInput = appContext.getAssets().open(DB_NAME); String outFileName = DB_PATH + DB_NAME; OutputStream myOutput = new FileOutputStream(outFileName); byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer)) > 0) { myOutput.write(buffer, 0, length); } myOutput.flush(); myOutput.close(); myInput.close(); } 但我得到了这个错误。 09-21 18:03:56.841: E/SQLiteLog(7850): (1) no such table: […]

数据库处理有2个进程

我有一个有2个部分的应用程序。 创建内容的服务。 使用内容的应用程序 每个都作为不同的进程运行。 问题是它们都共享一个数据库。 当服务尝试写入某些内容并且UI正在读取数据时,我经常会遇到数据库锁定错误。 反之亦然。 怎么办呢? 用于访问DB的类是单例类。 但由于UI和服务都是两个不同的过程,我认为有两个单身。 所以这没有用。 因为2个不同的过程,即使是synchronise也无济于事。 Content Providers可能是一个选项,但由于我使用复杂的查询来挖掘信息,因此也很难使用它。 如何让两个进程共享数据库。 任何提示将不胜感激。

如何限制Android SQLite表中的行数

我创建了一个具有“最新历史”的Android应用。 我想将此表的大小限制为最多50行(根据其插入日期)。 我看到几个线程讨论限制删除行的数量,但我不确定在Android的SQLite中是否启用了此function。 有人可以帮忙吗? 谢谢

随机exceptionandroid.database.sqlite.SQLiteException:无法打开数据库文件

我的应用程序使用未捕获的exception处理程序,在应用程序崩溃时将堆栈跟踪发送给我。 我经常从随机用户那里得到这份报告。 我无法复制它,数据库的打开总是在我的情况下成功。 这不是存储在外部SD卡上的数据库,只是使用SQLiteOpenHelper(context, “SomeName”, null, someVersionCode)打开的数据库SQLiteOpenHelper(context, “SomeName”, null, someVersionCode) 。 你有这方面的经验吗? 在打开数据库之前我可以检查哪些可能性? 谢谢! android.database.sqlite.SQLiteException: unable to open database file at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) at android.app.ActivityThread.access$2200(ActivityThread.java:119) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:4363) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) at dalvik.system.NativeStart.main(Native Method) Caused by: android.database.sqlite.SQLiteException: unable to open database file at […]

从SQLite数据库表中删除所有表行

我想删除我从SQLite数据库表中输入的所有行。 表名是tbltask 。 我试图删除表并从表中删除*,但那些给了我运行时错误。 我想在Button OnClickListner事件中触发此事件。 以下代码是我尝试的: String delete = “DELETE FROM “+DATABASE_TABLE; db.rawQuery(delete, null); db.delete(DATABASE_TABLE, null, null); logcat的: 11-15 17:45:04.660: DEBUG/AndroidRuntime(300): Shutting down VM 11-15 17:45:04.660: WARN/dalvikvm(300): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 11-15 17:45:04.710: ERROR/AndroidRuntime(300): FATAL EXCEPTION: main 11-15 17:45:04.710: ERROR/AndroidRuntime(300): java.lang.NullPointerException 11-15 17:45:04.710: ERROR/AndroidRuntime(300): at database.com.android.DatabaseAccess.drop(DatabaseAccess.java:258) 11-15 17:45:04.710: ERROR/AndroidRuntime(300): at com.android.ExtraActivity$3$1.onClick(ExtraActivity.java:61) […]

sqlite插入表select * from

我需要在我的Android应用中将数据从一个表移动到另一个表 我想使用以下sql: insert into MYTABLE2 select id, STATUS risposta, DATETIME(‘now’) data_ins from MYTABLE 2 不幸的是,在表MYTABLE2中有一个_ID列AUTOINCREMENT。 我能做什么? 谢谢。 编辑:这是我的MYTABLE2,我希望用另一个表中的数据填充表格: CREATE TABLE “ANSWERS” (“_id” INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , “ID_QUESTION” INTEGER,”DATE_INS” DATETIME DEFAULT (CURRENT_DATE) , “ANSWER” INTEGER)

Android JUnit4测试 – 从哪里获取上下文?

我必须构建一个使用sqlite的应用程序。 现在我想写unit testing。 这些unit testing应该测试我的SQLiteBridge类。 SQLiteBridge为每个子类Model提供DAO。 现在我遇到了一个问题,我需要一个上下文来创建我的SQLiteBridge 。 SQLiteBridge在系统上创建和处理SQLite数据库。 从哪里获取Context-Object? 我的设置就像在这里(所以我使用的是Junit4 [感谢上帝]): http : //tools.android.com/tech-docs/unit-testing-support 编辑:我希望有一种方式像旧的AndroidTestCase扩展而不会丢失Junit4。 🙂

如何以及在何处将sqlite(.db)文件添加到android项目中

我是Android新手。 现在,我正在尝试使用数据库。 我有许多用于操作Sqlite数据库操作的教程。 但我怀疑的是,我应该在哪里将.db文件添加到应用程序中。 在IDE的包浏览器窗口中,我需要在哪个文件夹组中添加.db文件? 我希望你理解我的问题。 提前致谢。