Articles of SQLite

从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'" 如何获取所有表名? 帮我 提前致谢..

如何访问Android中现有的SQLite数据库?

到目前为止,我们已经在android中开发了在运行时创build数据库的应用 我们想知道如何访问我们的android应用程序中的预build或现有的数据库/ sqlite文件? 请提供详细信息

SQlite获取最近的位置(经度和纬度)

我有存储在我的SQLite数据库的经度和纬度的数据,我想获得最近的位置,我放入的参数(例如,我的当前位置 – 纬度/经度等)。 我知道在MySQL中这是可能的,我已经做了相当多的研究,SQLite需要一个自定义的Haversine公式的外部函数(计算球体上的距离),但我还没有发现任何用Java编写的东西, 。 另外,如果我想添加自定义函数,我需要org.sqlite .jar(用于org.sqlite.Function ),并将不必要的大小添加到应用程序。 另一方面,我需要SQL函数中的Order by函数,因为单独显示距离并不是什么大问题 – 我已经在自定义的SimpleCursorAdapter中完成了,但我无法对数据进行sorting,因为我在我的数据库中没有距离列。 这意味着每次更改数据库时都会更新数据库,这样会浪费电池和性能。 所以如果有人有任何想法sorting光标与不在数据库中的列,我会很感激! 我知道有很多Android应用程序使用这个function,但有人可以解释这个魔术。 顺便说一句,我发现这个替代方法: 查询获取基于Radius的SQLite中的logging? 它build议为经纬度和纬度的cos和sin值创build4个新的列,但还有其他的,不是那么多余的方式吗?