Articles of SQLite

SQLite查询SQLiteLog(1)没有这样的列:

我有3节课。 一个设置数据库和表,工作正常。 DBHelper.java private static final String TAG = “DBHelper”; public static final String DB_NAME = “pat_test.db”; public static final String TABLE5 = “sites”; public static final String S_ID = BaseColumns._ID; public static final String S_CLIENT = “client_of_site”; public static final String S_POSTCODE = “site_postode”; public static final String S_CON_NAME = “contact_name”; public static final […]

Android:GUID主键

我知道如果我不使用名为_id的字段作为我在Android中的主键,那些像CursorAdapter这样的东西将不起作用,但_id列是否需要是一个自动增量int? 我可以使用Guid作为键,只要它被称为_id,并且CursorAdapter仍然有效吗?

将JSON存储在sqlite字段中?

我正在编写一个与Web API通信的应用程序,它使用JSON进行响应。 目前,我正在使用gson将JSON对象转换为Java对象(顺便说一句,这很棒)。 现在,我想将一些这些对象存储在SQLite数据库中。 但是,它们有许多永远不会在查询中使用的属性(即我不会对这些属性进行ORDER ing, WHERE ing或类似的东西),所以我觉得不必为所有这些属性创建列。 我在想做的是: 仅包含查询数据库时将使用的基本数据的列 有一个TEXT或BLOB列(你推荐哪一个?)存储实际的JSON,所以我可以从中重新创建我的Java对象并访问所有数据。 这将使我的生活变得更轻松并简化我的代码(在处理来自API的数据与来自数据库的数据时,我不必编写非常不同的代码)。 然而,虽然我没有看到任何缺点,但感觉有点可疑。 如果我使用这种技术,你认为我会遇到什么样的麻烦?

Android SQLite数据库区域设置,锁定和版本

在一些书籍和在线中,我看到在创建数据库之后进行这些方法调用: db.setLocale(Locale.getDefault()); db.setLockingEnabled(true); db.setVersion(DB_VERSION); 为什么这样做? 据我所知,在创建新数据库之后,系统会添加一个名为android_metadata的表,其中一个字段名为locale,该表有一行,其中locale字段设置为“en_US”。 现在我假设该列具有该值,因为我使用的是美国手机,如果我使用的是来自其他地区的手机,那么区域设置字段将被适当设置。 谁能证实这一点? 我猜测setLocale方法仅在您将预先构建的数据库安装到手机上然后想要更改区域设置以匹配手机的区域设置时才有用。 听起来不对? setLockingEnabled的文档说它默认为true,所以不需要拨打电话,对吧? 最后,对setVersion的调用是什么? 我找不到包含此信息的表,所以我一直假设数据库文件本身存储了某个版本号。 因此,当我创建一个数据库时,要求您在调用SQLiteOpenHelper构造函数时已经指定了版本号,那么调用setVersion就没有意义了。 同样,也许这种方法适用于将预先构建的数据库安装到设备的情况,然后您希望更改数据库的版本(虽然我无法想到何时这样做有意义)。 感谢您的任何见解!

Android设备上的SQL Lite数据库与SQL Server数据库之间的同步

我们正在尝试在托管在不同Android设备上的SQL Lite数据库与托管在中央服务器上的SQL Server数据库之间进行同步。 由于客户端的先决条件,我们取消了Web服务的使用。 还有另一种方式吗? PS:我们被允许在一天结束时将设备挂钩到可以托管Windows服务应用程序或Windows窗体应用程序以进行同步过程的服务器。 谢谢

iOS / Android与Delphi / C#桌面应用程序同步

不确定这是否是正确的Stack Exchange网站,但这里是.. 客户要求我研究是否有可能使用iOS或Android应用程序输入存储在SQLLite数据库中的信息,然后在通过电缆或其他同步技术插入时与主桌面应用程序同步。 桌面应用程序是目前在Delphi 7中编写的Windows应用程序。 是否有任何API可以同步来自Delphi可以使用的iOS / Android上的SQLLite数据库的数据? 如果没有,那么如果桌面应用程序是用C#编写的,那么它会更好吗?因为它的新语言可以更容易地使用API​​吗?

Android getColumName和getColumnIndex

我是一个Android新手,我的光标有问题。 我无法使用: cursor.get(cursor.getColumnIndex(columnName));来访问数据cursor.get(cursor.getColumnIndex(columnName)); 我尝试了以下代码来测试错误: while (cursor.moveToNext()) { int x = 2; Log.i(“MyDebug”, “Index: ” + x); Log.i(“MyDebug”, “Name: ” + cursor.getColumnName(x)); Log.i(“MyDebug”, “Index again: ” + cursor.getColumnIndex(cursor.getColumnName(x))); } 调试监视器的结果: Index: 2 Name: mainMenu.title Index again: -1 “索引再次”的结果不应该是2吗? 我究竟做错了什么?

如何在Assets中使用Android中预加载的SQLite数据库

我想在我的应用程序中使用preloaded database意味着在安装apk时尝试获取数据库,因此可以使用已保存在其中的数据。 我复制assets文件夹中的“ingredients.db”文件。 并使用以下代码,但这会收到错误“从资源文件复制数据库的问题” 我怎么解决这个问题? 请建议我尽可能的方式 我的数据库帮助程序类是这样的 class IngredientHelper extends SQLiteOpenHelper { private static final String DATABASE_PATH = “/data/data/com.example.preloadeddatabase/databases/”; private static final String DATABASE_NAME = “ingredients.db”; private static final String TABLE_NAME = “Ingredients”; private static final String COLUMN_ID = “_id”; private static final String COLUMN_TITLE = “ingredient_name”; private static final int SCHEMA_VERSION = 1; public […]

SQLite错误代码17

我的SQLite数据库中的一个表是返回以下错误代码: sqlite返回:错误代码= 17,msg =准备好的语句在32处中止[sql语句] 据我所知,数据已成功插入。 这是我应该关注的吗? 或者这只是一个错误的错误? 根据这篇文章,它说: 数据库架构已更改 究竟是什么意思? 有什么建议么?

如何在查询函数中使用LIKE子句

我正在制作一个应用程序,根据发件人编号在收件箱中搜索邮件。 这是我的代码: public void onClick(View v) { Toast.makeText(this, “search”, Toast.LENGTH_LONG).show(); final Uri SMS_INBOX = Uri.parse(“content://sms/inbox”); String[] colList = {“address”, “body”}; Cursor c = getContentResolver().query(SMS_INBOX, colList, null, null,”DATE desc”); String yz= String.valueOf(c.getCount()); Toast.makeText(this, yz, Toast.LENGTH_LONG).show(); if(c.moveToFirst()) { Toast.makeText(this, searchtxt.getText(), Toast.LENGTH_LONG).show(); for(int i=0;i<c.getCount();i++) { String number=c.getString(c.getColumnIndexOrThrow("address")).toString(); boolean match = number.toUpperCase().indexOf(searchtxt.getText().toString()) != -1; if (match) { Toast.makeText(this, String.valueOf(i), […]