Tag: SQLite

为SQLiteDatabase使用Singletondevise模式

我是Android新手,我正在做一个简单的应用程序来获得一些基本的经验。 我的应用程序非常简单,包括广播接收器和其他一些活动。 这两个组件都使用单个数据库,所以理论上可能会同时尝试访问数据库。 目前我只是简单地实例化db对象(这是一个SQLite数据库帮助类),每次我需要它,并执行所需的操作:查询,插入等 从我在这里和其他一些文档中读到的,这有一个问题,即在数据库被并发访问的情况下,获得一个“数据库locking”exception,所以更好的方法是有一个这个数据库对象的实例,所以所有组件始终使用相同的db连接。 上述推理是否正确? 单身人士是否会成为一个足够好的解决scheme呢? 我知道一些纯粹主义者可能会反对,但请注意,这是一个相当简单的应用程序,所以我可以负担得起的事情,我不会在其他情况下。 否则,更好的select是什么? 我已经阅读过关于使用内容提供者的内容,但是这对我来说太多了,除此之外,我不想与其他活动分享数据。 我确实看过这篇文章 ,发现它相当有帮助。

如何在我的Android应用程序中join两个SQLite表?

背景 我有一个Android项目,有两个表的数据库: tbl_question和tbl_alternative 。 用问题和替代方法填充视图,我正在使用游标。 在我尝试join这两个表之前,获取所需的数据没有任何问题。 Tbl_question ————- _ID 题 类别ID Tbl_alternative ————— _ID questionid 类别ID 替代 我想要的东西如下: SELECT tbl_question.question, tbl_alternative.alternative where categoryid=tbl_alternative.categoryid AND tbl_question._id = tbl_alternative.questionid.` 这是我的尝试: public Cursor getAlternative(long categoryid) { String[] columns = new String[] { KEY_Q_ID, KEY_IMAGE, KEY_QUESTION, KEY_ALT, KEY_QID}; String whereClause = KEY_CATEGORYID + "=" + categoryid +" AND "+ […]

密码保护SQLite数据库。 可能吗?

我不得不面对一个新的小项目。 它将有大约7或9张桌子,其中最大的一个月最多可以增长1000行。 我想SQLite作为我的数据库…但是我将需要保护数据库,以防有人想从数据库中更改数据 我的主要问题是: 是否有可能密码保护一个SQLite数据库,你会做的访问? 你会推荐什么其他的关系型数据库? 开发将在C#上,但我正在寻找一些免费的东西。

SQLite的UPSERT – 重复密钥更新

MySQL有这样的东西: INSERT INTO visits (ip, hits) VALUES ('127.0.0.1', 1) ON DUPLICATE KEY UPDATE hits = hits + 1; 据我所知这个function在SQLite中不存在,我想知道的是,如果有任何方法来归档相同的效果,而不必执行两个查询。 另外,如果这是不可能的,你更喜欢什么: SELECT +(INSERT或UPDATE)或 更新(+ INSERT 如果更新失败 )

Android数据库交易

我创build了一个数据库。 我想做交易。 SaveCustomer()包含多条语句,当时将logging插入到Customer, CustomerControl, Profile, Payment表中。 当用户调用SaveCustomer()方法时,那么这些数据将会转到这4个表。我怎样才能做这个事务呢? 如果一个表插入失败,那么需要回滚一切。 例如,当第三个表插入logging时,我得到一个错误,那么还需要回滚前两个表的插入logging。 看我的代码: public void saveCustomer(){ DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(RetailerOrderKeyActivity.this); dbAdapter.openDataBase(); ContentValues initialValues = new ContentValues(); initialValues.put("CustomerName",customer.getName()); initialValues.put("Address",customer.getAddress()); initialValues.put("CustomerPID",strPID); initialValues.put("Date",strDateOnly); long n = dbAdapter.insertRecordsInDB("Customer", null, initialValues); } 同样也有其他的说法。 DBAdpter代码是: public long insertRecordsInDB(String tableName, String nullColumnHack,ContentValues initialValues) { long n =-1; try { myDataBase.beginTransaction(); n = myDataBase.insert(tableName, nullColumnHack, initialValues); […]

在Android上简单导出和导入SQLite数据库

我想实现一个简单的SQLite导出/导入用于备份的目的。 导出只是存储原始current.db文件的副本。 我想要做的导入就是删除旧的current.db文件,并将imported.db文件重命名为current.db 。 这可能吗? 当我尝试这个解决scheme时,我得到以下错误: 06-30 13:33:38.831: ERROR/SQLiteOpenHelper(23570): android.database.sqlite.SQLiteDatabaseCorruptException: error code 11: database disk image is malformed 如果我在SQLite浏览器中查看原始数据库文件,它看起来很好。

在Android SQLite中处理date的最佳方法

我在使用SQLite的Android应用程序上处理date方面遇到了一些麻烦。 我有几个问题: 我应该使用什么types的存储dateSQLite(文本,整数,…)? 鉴于存储date的最佳方式,我如何使用ContentValues正确存储它? 从SQLite数据库检索date的最佳方法是什么? 如何在SQLite上进行SQLselect,按datesorting结果?

如何重命名SQLite数据库表中的列?

我需要重新命名SQLite数据库中某些表中的几列。 我知道一个类似的问题已经被问到以前的stackoverflow,但它是一般的SQL,并没有提到SQLite的情况。 从ALTER TABLE的SQLite文档中,我收集到,不可能“容易地”做这样的事情(即单个ALTER TABLE语句)。 我想知道有人知道用SQLite做这样的事情的一般SQL方法。

Android:升级数据库版本并添加新表

我已经为我的应用程序创build了sqlite表,但是现在我想向数据库添加一个新表。 我改变了DB版本如下 private static final int DATABASE_VERSION = 2; 并添加string来创build表 private static final String DATABASE_CREATE_color = "CREATE TABLE IF NOT EXISTS files(color text, incident_id text)"; onCreate和onUpgrade如下: @Override public void onCreate(SQLiteDatabase database) { database.execSQL(DATABASE_CREATE_incident); database.execSQL(DATABASE_CREATE_audio); database.execSQL(DATABASE_CREATE_video); database.execSQL(DATABASE_CREATE_image); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //drop table and add new tables when version […]

在iPhone上使用CoreData或SQLite?

由于CoreData在OS 3.0中已经可用于iPhone,它是否意味着数据持久性的答案,并取代所有直接使用SQLite ? 还有什么理由仍然使用SQLite ? SQLite和CoreData什么优点/缺点?