Articles of sqliteopenhelper

尝试重新打开已经关闭的对象:sqlitequery

所以基本上我两次查询数据库。 我不明白这个错误究竟来自哪里,因为我没有在任何地方关闭数据库。 返回错误的代码就是这样运行的。 我查了一下,我刚看到像我这样的案子。 BeaconHandler pullAllDB = new BeaconHandler(this); try { List beaconsShown = pullAllDB.getAllBeacons(); for (final Beacon bn : beaconsShown) { try { int messageCount = pullAllDB.getMessageCount(); Log.d(“Message”, messageCount + ” Messages Found”); if (messageCount > 0) { //Do Something } else { // Do Nothing } } catch (Exception e) { e.getStackTrace(); Log.e(“Message”, […]

尝试测试SQLiteOpenHelper但getWritableDatabase()会抛出Null

我正在尝试使用我的SQLiteOpenHelper对象在Android Studio中针对我的应用数据库编写junit测试。 每次遇到insert方法我都会得到一个NullPointerException。 我在使用getContext()和mockContext设置但是没有骰子之间来回走动。 我启动并运行了我的模拟器。 有人可以告诉我我做错了什么吗? public class LocationDatabaseHelperTest extends AndroidTestCase { private SQLiteDatabase testDB; private SQLiteDatabase readDB; private LocationDatabaseHelper dbh; private RenamingDelegatingContext mockContext; private ContentValues cv; /** *Sets up a mock context to initialize the * LocationDatabaseHelper object. * @throws Exception */ public void setUp() throws Exception { super.setUp(); final String prefix = “test”; […]

java – java.lang.IllegalStateException:无法从CursorWindow读取第0行col -1

我正在创建一个使用SQLiteDatabase存储ListView项的应用程序。 但是,从数据库填充ListView的数据时出现错误,应用程序崩溃。 这是我的数据库 – import java.util.ArrayList; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class NotesDatabase extends SQLiteOpenHelper { private static final String NOTE_NAME = “name”; private static final String NOTE_ID = “id”; private static final String NOTE_SUBJECT = “subject”; private static final String DATABASE_NAME = “notesDatabase”; private static final […]

SQLiteDatabase.openDatabase与SQLiteOpenHelper.getReadableDatabase

这两种方法有什么区别吗? 两者都返回一个打开的SQLiteDatabase。 如果不存在,则两者都可以创建数据库。 当需要读/写时,SQLiteOpenHelper也有getWriteableDatabase … 我应该使用哪种方法? 基于我见过的示例代码,我首先使用SQLiteOpenHelper创建数据库,但在需要使用数据库时调用SQLiteDatabase.openDatabase。

它是如何工作的SQLiteOpenHelper Context

我有一个有两个活动的应用程序。 其中一个列出了几个值,而另一个则向DB添加了新值。 我有一个从SQLiteOpenHelper扩展的类,并管理数据库连接,查询等。 现在,我理解在SQLiteOpenHelper的构造函数中,您必须传递一个上下文,该上下文用于确定是否必须创建新数据库或打开现有数据库。 但是如果我在每个活动中都有一个SQLiteOpenHelper类的实例,那么上下文就会有所不同。 有没有办法避免这种情况? 谢谢。

对SQLiteOpenHelper感到困惑并创建了多个表

我觉得Android开发人员关于在SQLite中保存数据的准则确实缺乏。 当涉及到多个表时,我很困惑一般指南是什么。 我目前有两个管理器向UI公开(CRUD)两组不同的实体。 我是: 在每个Manager中创建一个私有类SQLiteOpenHelper。 每个Helper都有自己的onCreate用于自己的TABLE? 要么 创建一个创建两个TABLE的单个公共类SQLiteOpenHelper? 我没有看到使用一个在另一个之上的明显优势,但我看到它们都被使用了。 Android对此有何评论?

Android Studio中的“android.database.sqlite.SQLitepenhelper中没有默认构造函数”

尝试使用SQLiteOpenHelper扩展类,但是此错误显示:“android.database.sqlite.SQLitepenhelper中没有可用的默认构造函数”以及其他“无法解析符号类别,注意……” class DbHelper extends SQLiteOpenHelper { @Override public void onCreate(SQLiteDatabase db) { db.execSQL(Category.getSql()); db.execSQL(Note.getSql()); db.execSQL(Attachment.getSql()); db.execSQL(CheckItem.getSql()); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(“DROP TABLE IF EXISTS ” + Category.TABLE_NAME); db.execSQL(“DROP TABLE IF EXISTS ” + Note.TABLE_NAME); db.execSQL(“DROP TABLE IF EXISTS ” + Attachment.TABLE_NAME); db.execSQL(“DROP TABLE IF EXISTS ” + CheckItem.TABLE_NAME); […]

为什么我们需要onUpgrade(); SQLiteOpenHelper类中的方法

我正在学习本教程。 http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/ 任何身体都可以让我清楚这段代码。 // Creating Tables @Override public void onCreate(SQLiteDatabase db) { String CREATE_CONTACTS_TABLE = “CREATE TABLE ” + TABLE_CONTACTS + “(” + KEY_ID + ” INTEGER PRIMARY KEY,” + KEY_NAME + ” TEXT,” + KEY_PH_NO + ” TEXT” + “)”; db.execSQL(CREATE_CONTACTS_TABLE); } // Upgrading database @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) […]

SQLiteOpenHelper同步

所以我想出了一些想法,我想知道它是否可以实现。 假设我有多个表(数据库模型),每个表都由某个类表示。我不会使用单一模式和open helper,所以我创建了一个简单的类来提供数据库的单个实例。我我的想法是,只要所有表都引用SQLiteDatabase(由open helper返回),它们都将使用相同的数据库实例,并且可能不需要将工作与数据库同步,因为open helper执行此操作。当最后一个表完成它的工作GC将收集打开的帮助器(因为最后一个引用将是弱引用) – > finalize()被调用,我在此方法期间关闭数据库以防止来自操作系统的任何警告。 我的问题是:这可以工作吗?它会自动关闭数据库,它会泄漏还是抛出一些exception? 这是我的class级: public class DatabaseHelper { private static WeakReference sDBOpenHelper; private void notifyDBCreate(SQLiteDatabase db) { for (DBTable table : mTables) { table.onDBCreate(db); } } private void notifyDBUpgrade(SQLiteDatabase db) { for (DBTable table : mTables) { table.onDBUpgrade(db); } } public SQLiteDatabase getDatabase(boolean readOnly) { SomeCustomOpenHelper dbHelper = sDBOpenHelper.get(); […]

在SQLiteOpenHelper中使用onCreate获取上下文

在我的Android应用程序中:如何在SQLiteOpenHelper的onCreate方法中访问Context?