Articles of SQLite

如何预填充Green DAO sqlite数据库

我即将使用Green DAO ORM工具。 我将不得不在我的数据库中插入大约六百行的数据。 我想知道有一种方法可以使用某种forms的sqlite数据库管理工具或脚本来预填充数据库。 我不想手动添加这些实体等等。 在android代码中。 这将太繁琐和耗时。

SQLiteOpenHelper – 在SD卡上创建数据库

在我的测试Android应用程序中,我打算创建和访问数据库文件,它将位于SD卡上。 我在一个类的帮助下使用main活动,该类扩展了SQLiteOpenHelper。 我想以与以前相同的方式使用它,但我必须以某种方式更改数据库PATH。 你知道吗,怎么实现呢? 谢谢 我当前扩展SQLiteOpenHelper的类的代码: public class DatabaseDefinition extends SQLiteOpenHelper{ private static final String DATABASE_NAME=”test.db”; private static final int DATABASE_VERSION=1; public DatabaseDefinition(Context context) { super(context,DATABASE_NAME,null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(“CREATE TABLE “+TABLE_NAME+” (“+ _ID +” INTEGER PRIMARY KEY AUTOINCREMENT, “+ NAME+” TEXT NOT NULL, ” +SURNAME+” TEXT NOT NULL, “+PHONE+” […]

在Android和SQlite中从未显式调用close()

我已经在stackoverflow上看了很多关于这个错误的post,看起来这个修复是在重写onDestroy()方法并关闭数据库。 但这似乎不适用于我的情况。 当Eclipse最初在我的手机上运行应用程序时,我实际上没有收到任何错误,但当我关闭应用程序并在我的手机上重新启动它时 – 就是在LogCat中显示close() was never explicitly called on database的时候。 我正在调用我的资产文件夹中的外部数据库,不确定它是否与它有关。 将对DBAdapter: import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; public class DBAdapter extends SQLiteOpenHelper { public static final String KEY_ROWID = “_id”; public static final String KEY_HDATE = “date”; public static […]

Sqlite数据库更新触发服务以通过内容观察器进行更新

我正在尝试使用内容观察器在我的应用程序中的sqlite数据库发生任何更改时更新服务。 我很困惑该怎么做,所以我把下面的代码放在一起。 通常,内容观察者与联系人或媒体播放器一起使用后台服务。 在我的研究中,我读到它可以与手机上的sqlite数据库一起使用。 问题:1。由于Sqlite数据库没有uri,我将用什么信息替换People.CONTENT_URI this.getContentResolver().registerContentObserver (People.CONTENT_URI, true, contentObserver); 2.在我的研究中,我没有find任何会进入数据库类的代码来提醒ContentObserver。 Content Observer的所有代码都在服务类中工作吗? 请注意,此问题类似于Android SQLite数据库通知以及如何监听联系人数据库中的更改这两个问题都没有明确回答我的问题。 如果你有解释这个的代码,那将非常有帮助。 这是我下面的半pusedo代码。 这是行不通的。 我正在使用它来了解在数据库信息更改时如何更新服务。 package com.example.com.test.content.observer; import java.sql.Date; import java.util.Calendar; import java.util.List; import com.google.android.gcm.demo.app.Alerts.AlarmsService; import com.google.android.gcm.demo.app.Alerts.Alerts; import com.google.android.gcm.demo.app.sqllite.DatabaseSqlite; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.provider.Contacts.People; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Intent; import android.database.ContentObserver; import android.util.Log; import […]

在Android中的资产文件夹中复制两个SQLite数据库

在过去的几天里,我一直在尝试复制资产文件夹中的两个数据库,但无法取得任何成功。 我设法复制并访问它的一个数据库。 但第二个,我需要你的帮助。

用波斯语写的sqlite数据库

我试图从csv文件创建一个sqlite数据库。 我这样做是因为在这个页面中说: 在android中使用你自己的sqlite db这个: 将csv导入sqlite 但问题是当表包含波斯语/阿拉伯语的数据时。 sqlite将该字符显示为“_”。 我该怎么办? PS。 我想在android项目中使用这个DB。 编辑:我使用以下代码将csv导入sqlite: CREATE TABLE “android_metadata”(“locale” TEXT DEFAULT ‘en_US’); CREATE TABLE “addresses”(_id integer PRIMARY KEY, nametext, meaning text); .separator “,” .import test.csv mydb

如何将edittext中的数据存储到android sqlite数据库?

我是Android上的新开发人员,我希望使用sqlite在数据库中存储用户数据。 对于该设计.xml文件用户名为edittext和take按钮,在单击按钮后填充所有文本字段后,所有数据都存储在数据库中。 并在屏幕上显示此数据…..

SQLiteDatabase更新不起作用?

我试图让db.update用新值更新我的数据库的一行,但它似乎没有保存。 我查看了我的语法,但似乎无法保存数据。 插入function正在运行,但没有更新。 任何帮助,将不胜感激。 下面是我使用DbHelper对象的数据类。 public class Data { static final String TAG = “Data”; public static final String DB_NAME = “data.db”; public static final String TABLE_NAME = “tasks”; public static final String C_ID = “_id”; public static final String C_TASK = “taskname”; public static final String C_DUE_DATE = “due_date”; public static final String C_PRIORITY […]

Android:在SQLite数据库上编写多个线程

在我的主要活动的onCreate()方法中,我调用了我的dbManager的构造函数,我调用了创建SQLiteOpenHelper实例的open函数,而不是在其上调用getWritableDatabase() 。 在UIThread中,我将记录添加到数据库并将这些记录保存到ArrayList。 另外两个线程检查ArrayList做什么,然后更新列表和数据库。 现在我想在UI中添加一个按钮,使用AsyncTask删除数据库和列表记录。 我已经读过SqliteOpenHelper对象保存在一个数据库连接上。 因此,如果有一个帮助程序实例,则只有一个数据库连接。 可以从多个线程使用此连接,SqliteDatabase对象使用java锁来保持访问序列化。 那么如果我在数据库上写了多个线程,那么一个线程会等到上一个线程完成其操作? 添加新function(全部删除)可能会产生问题,因为我必须避免两个线程中的一个可能尝试编辑不再存在的记录。 我怎样才能实现目标? 谢谢。

Loader框架与普通的AsyncTask

在我的应用程序中,我需要很多CRUD东西:从本地SQLite数据库读取记录,插入对象和更新东西。 大多数查询都非常简单,即使在UI线程上运行它们也不会阻塞,但是在这个应用程序中我想采用Windows Phone模式: outanimation开始animation,animation在结果传递时开始animation 。 我计划使用AsyncTask来完成这项工作,但是我注意到Honeycomb(以及compat包)引入了这个新的Loader框架 。 主要优势似乎是Loader加载的数据在配置更改后仍然存在。 Commonsware的LoaderEx项目在SQLite和框架之间架起了桥梁,但是出现了一些问题。 资源清理:我使用单个活动,在onCreate()创建SQLiteOpenHelper并将其关闭onDestroy() 。 由于加载程序管理器可能仍在运行,我检查它并在我的回调对象上设置pendingClose标志,因此它将在加载完成时关闭游标和帮助程序。 我认为不关闭数据库是没有害处的,但SQLite抱怨如果你不这样做,我不喜欢错误消息:)这里的重点是数据不能在配置更改中存活,因此Loader优势消失 我应该创建多少个装载机? 假设我拥有心爱的Customer和Order表。 装载程序由ID识别为CUST_L或ORD_L ,但每次用户点击某些摘要时我都要带一个带有详细信息的屏幕。 我应该restart具有不同参数的加载程序,还是应该使用随机ID restart的加载程序? 这可能会发生几十次。 Loader框架是针对许多小型运行的作业,还是仅针对一些长时间运行的任务? 在LoaderCallbacks界面中使用ID的目的是什么? 为什么不是一个简单的initLoader(params, callback) ? 我不认为可以在回调中重用一些逻辑:最终他将分支(使用if-else或switch ID)所以我不明白给回调对象赋予标识符的意义,而不是天真的方法一次回调 – 每次操作 。 我问这个是因为整个框架似乎对我来说过于工程化而没有实际效用。 我不明白用LoaderManager集中代码的意义,我看不到AsyncTask没有提供的任何新机会。 唯一的胜利点是配置改变生存,但由于资源清理我无法利用它,我无法find另一种方法来关闭SQLiteOpenHelper因为(很明显) SQLiteCursorLoader需要它,但清理它是up up给用户。 所以AsyncTask似乎是这里的赢家选择,但也许我错过了一些东西。