Articles of SQLite

Android中外部存储上的SQLite性能不佳

我正在使用外部存储将事件存储在数据库中,等待发送到服务器。 插入logging时,我看到了非常糟糕的performance。 我知道外部存储器可能很慢,但我想看到一些数字,所以我写了一个小应用程序来testing它。 这里是代码: public static final int INSERTS = 100; File dbFile = new File(Environment.getExternalStorageDirectory(), "test.sqlite3"); // File dbFile = new File(getFilesDir(), "test.sqlite3"); dbFile.delete(); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbFile, null); db.execSQL("CREATE TABLE events (_id integer primary key autoincrement, event_type TEXT NOT NULL, timestamp BIGINT, data TEXT);"); db.execSQL("CREATE INDEX mainIndex ON events (event_type, timestamp ASC);"); InsertHelper […]

IllegalStateException:尝试使用ContentProvider查询数据库时无效的表

尝试使用下面显示的自定义ContentProvider查询我的数据库时,出现以下错误。 我已经确认表存在与正确的名称,它仍然无法正常工作。 我能够得到它与原始查询,但我想我们的ContentProvider模式进行实践。 谢谢,让我知道如果你需要更多的信息。 SQLiteOpenHelper public class DatabaseHelper extends SQLiteOpenHelper { private static final String TAG = DatabaseHelper.class.getSimpleName(); private static final String DB_PATH = "/data/data/ashton.android.personal.worktc/databases/"; private static final String DB_NAME = "worktc.db"; private static final int DB_VERSION = 1; private SQLiteDatabase myDatabase; private final Context context; public DatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); this.context […]

GreenDAO如何获得最高logging?

我想从我的桌子上得到一些logging,但是GreenDAO不提供它。 喜欢这个: SELECT TOP 1 * FROM table_name 在LINQ中,您可以使用Take()获得最高logging,GreenDAO有没有解决scheme? 每个人都可以提供一个build议吗?

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

尝试扩展类与SQLiteOpenHelper,但是这个错误显示:“没有默认构造函数在android.database.sqlite.SQLitepenhelper”与其他“无法parsing符号类别,注意,…” 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); […]

从sqlite数据库中删除所有表

我做了大量的研究,无法find合适的方法来删除SQLite数据库中的所有表。 最后,我做了一个代码来从数据库中获取所有的表名, 我试着用检索到的表名逐个删除表 。 它没有工作。 请build议我一个从数据库中删除所有表的方法。 这是我使用的代码: public void deleteall(){ SQLiteDatabase db = this.getWritableDatabase(); Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null); do { db.delete(c.getString(0),null,null); }while (c.moveToNext()); } 函数deleteall()在button上调用,点击whos代码如下: public void ButtonClick(View view) { String Button_text; Button_text = ((Button) view).getText().toString(); if(Button_text.equals("Delete Database")) { DatabaseHelper a = new DatabaseHelper(this); a.deleteall(); Toast.makeText(getApplicationContext(), "Database Deleted Succesfully!", […]

将默认值设置为SQLite中的列

我有一个SQLite表,并希望暂时将其设置为默认值。 我怎样才能做到这一点? 以下是我的DatabaseHelper类代码: import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME="iFall.db"; public static final String TIME="time"; //public static final String STATUS="status"; //public static final String MINES="loadmines"; //public static final String OPENTILE="openTile"; public DatabaseHelper(Context context) { super(context,DATABASE_NAME,null,1); } @Override public void onCreate(SQLiteDatabase arg0) { // TODO Auto-generated […]

SQLite for Android定制表视图(SQL VIEW,不是Android视图)的差异?

我已经在Android应用程序的SQLite数据库中创build了一个自定义视图。 我在Ubuntu上使用Sqliteman来testing我的SQL语句,然后将其放入我的应用程序中。 我试图在我的观点上做一个简单的select陈述。 SELECT语句在SQLiteman中工作正常,但是当我在代码中放入相同的语句时,会引发错误。 该声明: select * from item_view where parent_item_id = 0; 视图(以Stringforms转换为Java): "create view if not exists item_view as select " + "item._id, item.status, item.name, item.position, " + "item.parent_item_id, item.note_id, item.other_id, " + "note.contents, other.priority " + "from item, note, other where item.note_id = note._id and item.other_id = other._id" 错误: 07-16 14:21:15.153: ERROR/AndroidRuntime(5054): […]

为什么我们需要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) […]

Android SQLite查询的列不为空,而不是空的

我找不到.query调用的语法。 我需要select与第二个(不同)列没有空值或空值的特定列匹配的所有logging 我最好的尝试: Cursor cursor = mDatabase.query(DatabaseOpenHelper.TABLE_ROOMS, mAllColumns, DatabaseOpenHelper.KEY_ROOM_HOSPITAL_ID + " =? AND " + DatabaseOpenHelper.KEY_ISO + " IS NOT NULL OR NOT ?", new String[]{String.valueOf(hospitalId), ""}, null, null, null); 这是返回所有logging。 如果我使用AND代替OR,它会返回匹配hospitalId的logging,但是会忽略NOT NULL或NOT“”部分。 有小费吗? 我应该使用rawQuery调用吗? 谢谢。

我怎样才能打开.db文件。 .db文件是从eclipse(android)的forms生成DDMS – >文件资源pipe理器 – >数据—>数据 – >包名 – >数据库…?

.db文件是从eclipse(android)的forms生成DDMS – >文件资源pipe理器 – >数据 – >数据 – >包名称 – >数据库…. 然后select数据库,然后单击从设备中推送文件并将其保存为.db文件….如何查看此数据库…