jjzjj

SQLiteOpenHelper

全部标签

android - 真的有必要在每次应用程序启动时都创建 SQLite 表吗?

我在不止一个SQLite教程中注意到,该表是在扩展SQLiteOpenHelper的类的onCreate()事件中重新创建的。我已经在Firefox插件的帮助下在Android环境(EclipseIDE)之外创建了我的SQLite数据库和表。数据库表位于预期位置:C:\aXX3&Space\Android\workspace\OnDemandAndAutomatic_Project\assets我每次都必须以编程方式重新创建它们,这对我来说似乎很奇怪(显然,它们继续存在并保留数据,否则有什么意义)?但是,我现在遇到这个应用程序的严重问题,这让我想到了我的问题:数据库真的有必要每次都提醒

android - SQLiteOpenHelper.close() 和 SQLiteDatabase.close() 有什么区别?

当我调用SQLiteOpenHelper.close()时会发生什么,当我调用SQLiteDatabase.close()时会发生什么?对于我的android应用程序,我总是创建Application类的子类,它具有MySQLiteOpenHelper的单个实例,它是SQLiteOpenHelper的子类,它将是由所有应用程序组件共享,如服务、Activity和广播接收器。在MySQLiteOpenHelper中,我有一个SQLiteDatabase实例。我在Application.onCreate()方法中创建了MySQLiteOpenHelper的实例,并且从不在任何SQLiteO

java - 尝试测试 SQLiteOpenHelper 但 getWritableDatabase() 抛出 Null

我正在尝试使用我的SQLiteOpenHelper对象在AndroidStudio中针对我的应用程序数据库编写一个junit测试。每次它遇到插入方法时,我都会得到一个NullPointerException。我在使用getContext()和我设置的mockContext之间来回切换但没有骰子。我已经启动并运行了我的模拟器。有人可以告诉我我做错了什么吗?publicclassLocationDatabaseHelperTestextendsAndroidTestCase{privateSQLiteDatabasetestDB;privateSQLiteDatabasereadDB;pr

android - SQLite 数据库迁移似乎仅部分适用于 Espresso 测试

我们有一个SQLite数据库和一个相应的SQLiteOpenHelper子类。这个助手有一个onDowngrade实现,我想为其编写一个Espresso测试。完整的onDowngrade实现可用here.这是它的简化版本:@OverridepublicvoidonDowngrade(SQLiteDatabasedb,intoldVersion,intnewVersion){db.execSQL("CREATETABLEIFNOTEXISTSfoo_tmp(_idintegerprimarykey,bartextnotnull,baztextnotnull);");db.execSQL(

java - 如何在没有或较少限制使用上下文的情况下使用 SQLiteOpenHelper?

如果您扩展SQLiteOpenHelper,您必须为构造函数使用上下文。我想知道是否有办法忽略它,并且能够在没有上下文的情况下使用数据库表。或者至少是限制性的,我的意思是一种项目/类结构的方式,它将使我现在必须做的几个上下文传递成为历史。因为我的应用程序有几个级别的类,彼此链接,并且有一些连接到数据库,但对界面没有任何影响,所以它们实际上不需要上下文。您是否按照每次将上下文传递给类的方式创建类?如果不是,你怎么做,你如何在一个简短的类中重用上下文? 最佳答案 Iamwonderingifthereisawaytoleavethiso

android - SQLiteOpenHelper 多个内存数据库

android.database.sqlite.SQLiteOpenHelper如果其构造函数的名称参数为null,则提供使用内存数据库的能力:String:ofthedatabasefile,ornullforanin-memorydatabase如果SQLiteOpenHelper使用null名称参数多次实例化,它们访问同一个内存数据库还是每次都创建一个单独的内存数据库? 最佳答案 来自SQLite官方文档In-MemoryDatabases打开两个文件名为“:memory:”的数据库连接将创建两个独立的内存数据库。在Andro

android - 使用应用程序包时,<1% 的用户会收到 UnsatisfiedLinkError

我正在尝试使用新的AndroidAppBundle。我在我的设备上本地运行了一些测试,一切正常。然而,一旦部署到生产环境,我就开始看到一些这样的错误:java.lang.UnsatisfiedLinkError:dalvik.system.PathClassLoader[DexPathList[[zipfile"/data/app/xyz/base.apk"],nativeLibraryDirectories=[/data/app/xyz/lib/arm,/vendor/lib,/system/lib]]]couldn'tfind"libsqlite3x.so"java.lang.Ru

android - 无法在三星上将数据库从版本 `n` 降级到 `n-1`

我有一个带有数据库的应用程序,它是使用标准SQLiteOpenHelper创建和打开的。每当我升级数据库版本时,我也会升级应用程序的版本代码,所以数据库没有办法下降(数据库版本号总是增加,从不减少)。我通过将android:allowBackup属性设置为false在我的应用程序中禁用了数据库备份。但是当我在Play商店升级应用程序时,我遇到了很多崩溃Can'tdowngradedatabasefromversionnton-196%的崩溃发生在运行.任何人都知道为什么会出现此问题,更重要的是如何防止此崩溃?我知道我可以覆盖onDowngrade以防止崩溃,但我实际上不明白为什么要调用

Android jUnit 测试 java.lang.NoClassDefFoundError : android/database/sqlite/SQLiteOpenHelper

我正在尝试运行模拟SQLiteOpenHelper子类的单元测试,但出现以下错误。java.lang.NoClassDefFoundError:android/database/sqlite/SQLiteOpenHelperatjava.lang.ClassLoader.defineClass1(NativeMethod)atjava.lang.ClassLoader.defineClass(ClassLoader.java:763)atjava.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)atja

android - SQLiteOpenHelper "onCreate"没有被调用? (数据库不存在)

从fragment中我以这种方式实例化fmdata=newFileManagerData(getActivity());下课。我不明白为什么没有调用onCreate()并且没有创建我的数据库。publicclassFileManagerData{publicstaticfinalStringTAG=FileManagerData.class.getSimpleName();;Contextcontext;DBHelperdbHelper;publicFileManagerData(Contextcontext){this.context=context;dbHelper=newDBHe