Articles of SQLite

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个新的列,但还有其他的,不是那么多余的方式吗?

在android中创buildSQLite数据库

我想在我的应用程序中创build一个SQLite数据库,该数据库包含三个表格,我将在表格中添加数据并稍后使用它们。 但我喜欢保持数据库,就好像当第一次安装应用程序时,它会检查数据库是否存在,如果存在则更新它,否则创build一个新的数据库。 进一步,我正在做一个数据库类,以方便我的应用程序,所以我不会创build一个活动,我的数据库创build。 如果有可能的build议,请与我分享

Android系统。 内容提供者或数据库?

如果最好使用ContentProvider或Database ,我在这个问题上有点困惑。 或者,如果我不想与其他应用程序共享任何数据,则没有任何区别。 如果我理解正确的话,那么基于SQLite内容提供者也是可能的,他们的内容只能用于我的应用程序。 你能给一些解释吗? 非常感谢你, 穆尔

Android SQLite数据库,为什么要删除表并在升级时重新创build

在教程中,我遵循以及更多的地方,我看到这一点,onUpgrade – >删除表,如果存在,然后重新创build表。 这样做的目的是什么? private static class DbHelper extends SQLiteOpenHelper{ public DbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME + " TEXT NOT NULL, " + KEY_HOTNESS + " TEXT […]

为什么要在Android中使用sqlite数据库?

为什么我们在android中使用sqlite数据库?我正在开发一个android应用程序,从服务器获取数据并进行一些数据计算并在UI上显示。 对于我来说,将数据提取到sqlite数据库,并在evry的sqlite中定期更新用户界面20分钟,或者将Http get请求发送到服务器并更新数据UI。 我想知道哪一个会更好,为什么?为什么涉及sqlite数据库? 这些数据对应于一些40X40的表格数据,在这些表格数据上将进行一些重要的math处理,然后在UI上显示(类似于股票市场应用),并且每12小时后需要清除数据。 build议Rgds,劳尔

如何将字节数组转换为位图

我想在SQLite DataBase存储图像。 我试图存储它使用BLOB和String ,在这两种情况下,它存储图像,可以检索它,但是当我把它转换为Bitmap使用BitmapFactory.decodeByteArray(…)它返回null。 我已经使用这个代码,但是它返回null Bitmap bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length);

用SQLiteDatabase.execSQL执行多个语句

我遵循一个标准的教程,用Android构build数据库。 我创build了一个名为DbHelper的类,它扩展了SQLiteOpenHelper。 我已经重写了创build处理程序来执行一个string。 @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DbDefinitions.DB_CREATE); } DbDefinitions.DB_CREATE是我创build的一个静态string。 public static final String TABLE_MESSAGES = "messages"; public static final String TABLE_FRIENDS = "friends"; public static final String STATE_OK = "STATE_OK"; public static final String DB_CREATE = "create table " + TABLE_MESSAGES + " (_id integer primary key, user_id integer not null, created_on […]