Articles of SQLite

从Android Studio浏览SQLite数据库

我想知道是否有任何Android Studio的SQLite插件,将允许用户浏览创build的数据库?

如何检查Android SQLite数据库中是否存在表?

我有一个android应用程序,需要检查数据库中是否有logging,如果没有,处理一些事情并最终插入它,如果数据存在,只需从数据库中读取数据。 我使用SQLiteOpenHelper的子类来创build并获得一个SQLiteDatabase的可重写实例,我认为自动照顾创build该表,如果它不存在(因为要做的代码是在onCreate(… ) 方法)。 但是,当表尚不存在,第一种方法运行SQLiteDatabase对象我有一个调用查询(…),我的logcat显示错误“我/数据库(26434):sqlite返回:错误代码= 1,味精=没有这样的表:appdata“,果然,没有创buildappdata表。 任何想法为什么? 我正在寻找一种方法来testing表是否存在(因为如果不存在,数据当然不在其中,我不需要读取它,直到我写入它,这似乎创build表正确),或确保它被创build的方式,只是空的,及时的第一次调用查询(…) 编辑 这是后面的两个答案发布: 我想我可能已经find了问题。 由于某种原因,我决定为每个表创build一个不同的SQLiteOpenHelper,尽pipe它们都访问同一个数据库文件。 我认为重构该代码只使用一个OpenHelper,并创build两个表内的onCreate可能会更好地工作…

从SQLite获取所有行

我一直试图从SQLite数据库中获取所有行。 但是,我从下面的代码只得到最后一行。 FileChooser类: public ArrayList<String> readFileFromSQLite() { fileName = new ArrayList<String>(); fileSQLiteAdapter = new FileSQLiteAdapter(FileChooser.this); fileSQLiteAdapter.openToRead(); cursor = fileSQLiteAdapter.queueAll(); if (cursor != null) { if (cursor.moveToFirst()) { do { fileName.add(cursor.getString(cursor.getColumnIndex(FileSQLiteAdapter.KEY_CONTENT1))); } while (cursor.moveToNext()); } cursor.close(); } fileSQLiteAdapter.close(); return fileName; } FileSQLiteAdapter类: public Cursor queueAll() { String[] columns = new String[] { KEY_ID, KEY_CONTENT1 }; Cursor […]

我如何将SQLite数据库embedded到应用程序中?

我觉得我有一些基本的理解问题,所以也许有人能够帮助:-) 我正在开发一个使用Eclipse的Android应用程序,这个应用程序将使用一个数据库(只有从数据库读取将被实施)。 该数据库包含大约4000个条目,即通过源代码创build和填充数据库不是一个选项。 因此,我已经提前创build了所有logging的数据库。 但是,我怎样才能将这个数据库文件“embedded”到我的应用程序中,然后访问它呢? 数据库大小约为500 kB。 从远程服务器下载不是一个选项,因为这是不允许的。 谢谢你,罗伯特

在Sqlite表中插入null

我试图找出如何在Android中的SQLite表中插入一个空值。 这是表格: "create table my table (_id integer primary key autoincrement, " + "deviceAddress text not null unique, " + "lookUpKey text , " + "deviceName text , " + "contactName text , " + "playerName text , " + "playerPhoto blob " + ");"; 我想通过execSQL使用一个简单的插入命令,但由于其中一个值是blob我不能这样做(我认为)。 所以,我正在使用一个标准的db.Insert命令。 我如何使其中一个值为空? 如果我只是在ContentValues对象中跳过它,它会自动在列中放置一个空值?

在Android中将.csv文件导入Sqlite

我有一个.csv文件,我想导入这个文件放入我的数据库在Android中。 例如,.csv文件: | id | name | dt1 | dt2 | dt3 | | 1 | Paul | 21 | 98 | 91 | | 2 | John | 22 | 44 | 11 | | 3 | George| 21 | 31 | 22 | | 4 | Ringo | 20 | 10 | 15 […]

closuresContentProvider中的数据库

本周我一直在学习关于ContentProvider的所有内容,并使用SQLiteOpenHelper类来pipe理提供者内部数据库的创build和升级。 具体来说,我一直在通过sdk的samples目录中的NotePad例子。 现在,我可以看到SQLiteOpenHelper有一个close()方法。 我知道,将闲置的数据库打开是不好的做法,可能导致内存泄漏,而不是(除非这个讨论是朝着正确的方向进行的)。 如果我在一个Activity中使用这个类,那么我只需要在onDestroy()方法中调用close()方法,但据我所知,ContentProvider没有活动所用的生命周期。 NotePad的代码似乎永远不会调用close(),所以我想假设它由SQLiteOpenHelper或其他一些难题处理,但我真的很想知道。 我不太相信样例代码,或者… 问题摘要:我们应该什么时候closures供应商的数据库?

更改SQLite数据库版本号

我有一个数据库,我build立在SQLite浏览器,它工作正常。 我启动了一个预构build数据库的应用程序,现在我想添加更多的表和数据到该数据库。 我可以让应用程序启动SQLiteOpenHelper的onUpgrade方法。 但问题是,每当我使用帮手时,都会这样做。 我把它本地化到,只在应用程序启动时,从我用来检索数据的帮助程序中分离出升级命令,但这仍然是一个问题。 我已经知道了,因为我从我的计算机(我正在编辑一个)使用相同的数据库,因为版本1.所以,每当它写入新的数据库到SD卡它显示版本1即使我现在应该达到第4版。 所以,我的问题是,我怎样才能手动编辑原始数据库的数据库版本,以便它在更新时不更新旧版本号?

Android:使用UUID作为SQLite中的主键

我的应用程序需要与其他应用程序用户(在自己的设备上)同步。 我也想支持离线编辑,当用户连接到互联网时,离线编辑与其他协作用户同步。 因此,用户A(当他离线时)改变了一些数据(以其他方式,他将更新数据库条目)或向数据库添加新的logging。 当用户A连接到互联网时,所有更改和新logging都会传送给其他协作用户。 所以用户B将得到更改/更新,并且可以将它们插入/更新到用户B本地设备数据库中。 但是我需要确保数据库条目的id在整个系统中是唯一的。 所以我需要使用像UUID的东西。 我的问题是使用UUID(string/ Varchar)作为主键在android sqlite数据库表中而不是一个整数将自动增加是一个坏主意? 我想通过使用string(一个UUID有36个字符)作为主键会有性能问题。 我猜索引uuids而不是整数需要更长的时间(比较string比较整数)。 我也猜测,当我使用UUID时,每次插入一个新的数据库logging/条目,数据库需要重新索引主键列,因为他们的主键索引不是sorting顺序了(这将是当我将使用整数自动增加主键,因为每个将来的logging都是在最后添加的,因为新的自动增加的主键总是最大的数字,所以索引会自动sorting)。 我还需要做的是连接2 – 3表。 我也猜测比较连接而不是整数的string会减慢数据库查询。 但是我不能看到其他可能性来实现这样的协作同步系统,所以我必须使用UUID,对吧? 另一种可能性是使用整数自动增量主键和使用第二列uuid。 所以要在用户本地设备上工作,我会使用这个主键(整数)连接等,而我会使用uuid列与其他用户同步。 你们对这种方法有什么想法,或者你认为需要做很多工作,因为你不会直接将UUID作为主键,而是预料到一个重大的性能问题? 还有其他build议吗?

如何获得Android的SQLite数据库中的所有表名?

我已经尝试这个代码 Cursor c=db.rawQuery("SELECT name FROM sqlite_master WHERE type = 'table'",null); c.moveToFirst(); while(!c.isAfterLast()){ Toast.makeText(activityName.this, "Table Name=> "+c.getString(0), Toast.LENGTH_LONG).show(); } 但它会抛出错误"android.database.sqlite.SQLiteException: no such table: sqlite_master(code 1):,while compiling: SELECT name FROM sqlite_master WHERE type='table'" 如何获取所有表名? 帮我 提前致谢..