Articles of SQLite

不支持在SQLite.Net中使用LINQ on xamarin.android连接表

我陷入了连接,我无法弄清楚问题出在哪里,我有那些桌子 public class Themes { [PrimaryKey, AutoIncrement] public int Id { get; set; } public String ThemeName { get; set; } public String ThemeDesc { get; set; } public int ThemeImg { get; set; } public String ThemeCategory { get; set; } public String ThemeSubcategory { get; set; } } public class MusicItems { [PrimaryKey, […]

onUpgrade数据库 – oldVersion – newVersion

我正在使用这个DataBaseHelper.class,我被困在onUpgrade() – 方法上。 我不知道如何弄清楚数据库的版本号是什么。 我可以将版本设置为1,我第一次发布它,当我发布更新时,我只需将版本设置为2 (myDataBase.setVersion(2);) 。 但只要应用程序正在运行,它就只有2。 下次启动它再次为1。 private static int DATABASE_VERSION 。 我正在考虑将版本号存储在一个额外的表中,但在我看来,这似乎不是最佳实践。 那么如何确保版本号在升级后增加并且保留它(分配给private static int DATABASE_VERSION或myDataBase.getVersion(); )的值? DataBaseHelper类: public class DataBaseHelper extends SQLiteOpenHelper { //The Android’s default system path of your application database. private static String DB_PATH = “/data/data/com.mydatabase.db/databases/”; private static String DB_NAME = “database.sl3”; private SQLiteDatabase myDataBase; private final Context myContext; […]

更新sqlite数据库版本?

我有一个数据库,我想添加一个列,我更改了静态数据库版本,但是当我在我的设备上运行程序时,新列仍然没有,所以我猜我的onUpdate没有被调用,我不确定为什么。 这就是我创建数据库的方式 private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { createTables(db); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(“CalendarDB”, “Upgrading database from version ” + oldVersion + ” to ” + newVersion + “, which will destroy all […]

我应该如何正确打开和关闭我的数据库

我有一个应用程序,它将一些数据存储在SQLite数据库中。此外,我在我的应用程序中进行了大量查询和重新查询。我在其中有大约15个活动。并且所有人都使用数据库来查询数据。 但我正在做的是在每个活动中打开我的数据库并在每个活动的onDestroy {…}中关闭它。 问题是onDestroy {…}可能永远不会被调用,有时候我的应用程序会保持很长时间,并且我会从一个活动切换到另一个打开多次我的数据库。 有时我会得到像数据库这样的错误太多次打开而且从未关闭过。 在我从中获取数据并关闭它后,我会尝试完全关闭我的数据库…转到我的下一个活动并重新打开等等……但问题是在某些活动中我从其他活动……关闭我的数据库并回到那个活动会产生一个很大的力量关闭。 我想做的是在我的应用程序开始时打开我的数据库并在结束时关闭它,但我面临两个问题: 1.我应该让我的SQLiteOpenHelper类成为单例吗?…获取它的实例…在我的第一个活动中打开它然后在我的下面的活动中获取我已经打开的数据库的实例/ ??? 2.我的应用程序结束了????我怎么知道应用程序的结束位置以及关闭数据库的位置。 编辑: public class DBAdapter extends SQLiteOpenHelper { public DBAdapter(Context context) { super(context, DATABASE_NAME, null, 1); this.myContext = context; } public void openDataBase() throws SQLException { String myPath = DATABASE_PATH + DATABASE_NAME; db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); } } 这是我class上管理我的DB的一段代码。为了使这个单例,我应该使用一个构造函数: private DBAdapter() { //nothing in […]

如何使用AsyncTask中的SQLite DB?

我一直在使用我的Activity类来访问我的数据库,这使我的程序有时会冻结。 所以我决定使用AsyncTask来处理数据库。 我的问题是我不知道如何从AsyncTask的类中实例化我的SQLite DB“TheDB” public class myClass extends AsyncTask{ private TheDB db; any method() { this.db = new TheDB(this); //<– Error here } 这在Activity类上运行良好,但我不知道如何在这里使用它 TheDB的构造函数是TheDB(Context context),但是这个类不是“上下文”,所以我如何在这里使用我的DB? 如果可以,请提供示例 请不要给我链接谷歌的参考,我是一个新手,我发现他们很难遵循

是否可以获取apk中对sqlite数据库的只读访问权限?

可能重复: 如何将现有数据库放在.apk文件中? 是否有可能获得对位于apk的sqlite数据库的只读访问权限? 如果可以从apk中以只读方式访问数据库,我不想复制数据库。

sqlite表中的最大行数?

sql lite表是否有一些行限制? 当该表有超过6000行时,我的应用程序给出错误“没有这样的表x …”。 低于6000行,不要给出任何错误。 谢谢。 这是查询。 db = (new DatabaseHelper(this)).getWritableDatabase(); cursor = db.rawQuery(“SELECT continentes._id, continentes.ContinenteID, continentes.Continente” + ” FROM continentes” + ” WHERE continentes.Continente LIKE ?” + ” GROUP BY continentes.ContinenteID, continentes.Continente ORDER BY continentes.Continente”, new String[]{“%” + searchText.getText().toString() + “%”}); 这是我创建表的地方 @Override public void onCreate(SQLiteDatabase db) { String s; try { Toast.makeText(context, “Creating […]

如何通过从SQL文件导入在Android中创建SQLite数据库?

我有一个包含SQL CREATE TABLE和INSERT语句的大文本文件。 如何在SQLiteOpenHelper onCreate方法中导入此文件? 或者,是否有直接使用二进制数据库文件的可接受方式? 我需要它与Android 1.6兼容。

Ormlite Android批量插入

任何人都可以解释为什么我的插页在Ormlite中花了这么长时间? 在桌面上的一个sqlite事务中执行1,700次插入只需不到一秒钟。 但是,当使用Ormlite for Android时,它需要大约70秒,我可以在调试消息中看到每个插入。 当我尝试将插入包装到一个事务中时,它以完全相同的速度运行。 我知道Android和Ormlite都有开销,但是,我不希望它会那么棒。 我的代码如下: this.db = new DatabaseHelper(getApplicationContext()); dao = db.getAddressDao(); final BufferedReader reader = new BufferedReader(new InputStreamReader(getResources().openRawResource(R.raw.poi))); try { dao.callBatchTasks(new Callable() { public Void call() throws Exception { String line; while ((line = reader.readLine()) != null) { String[] columns = line.split(“,”); Address address = new Address(); // setup Address dao.create(address); […]

SQLite Android。 无法打开数据库文件

我发现了很多关于这个问题的问题,但我无法修复它。 我在资源文件夹中有一个sqlite数据库: assets/data/data/{package_name}/databases/mydb.db 我可以在更改一个表结构之前打开数据库并读取数据。 我尝试卸载应用程序并重新安装,但我得到相同的例外。 我现在能做什么? 提前致谢 编辑 // The Android’s default system path of your application database. private static String DB_PATH = “/data/data/{mypagackename}/databases/”; private static String DB_NAME = “mydb.db”; 打开数据库(在更改表结构之前,添加一些字段,它不起作用) public void openDataBase() throws SQLException { // Open the database String myPath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); }