Articles of android sqlite

将SQLite转换为JSON

有没有办法将sqlite转换为json? 所有其他问题是解析json并保存到sqlite。 我似乎无法find任何参考,请帮助我。 我在应用程序内部有一个sqlite数据库,我需要它转换为json,升级db版本,解析早期转换的json并添加另一个表。 关于我该怎么做的任何建议? 提前致谢。

如何在SQLite中将毫秒转换为日期

我从Calendar.getTimeInMilliseconds()在SQLite DB中存储日期。 我需要在SELECT语句中按月标记第一行,因此我需要使用SQLite函数将时间(以毫秒为单位)转换为任何日期格式。 我怎么能避免这个?

在极少数情况下,“android.database.sqlite.SQLiteException:没有这样的表”错误

我有一个应用程序商店目前可用的应用程序,但有一种types的错误报告,我似乎无法完全弄清楚。 我的应用程序使用内部sqlite数据库,但在某些设备上(当然不是大多数)有时会发生以下错误: android.database.sqlite.SQLiteException:没有这样的表:image_data(代码1):,同时编译:SELECT Min(stamp)FROM image_data WHERE category =’Astronomy’AND stamp> = 1357426800 and coalesce(title_nl,”)=’ “ 我确信这个表存在,我确信这个查询是正确的。 我知道这个错误只发生在应用程序的小部件和AlarmManager触发的BroadcastReceiver中(应用程序偶尔尝试下载新条目,因为它是当天应用程序的图片)。 我认为它与访问数据库时我所处的Context有关。 我有一个名为AppContextHelper的类,它扩展了Application并有一个静态成员,我在其中存储上下文。 访问数据库时始终使用该上下文。 我的问题:在某些情况下,当获取窗口小部件中的数据库或由AlarmManager触发的上述BroadcastReceiver时,这个上下文是无效的吗?在这种情况下,我应该使用提供的Context来支持’application’上下文? 如果是这样,为什么该上下文无效或更好,哪个上下文是提供的? 提前致谢! 正如请求导致问题的代码一样,仅在某些设备上,而且仅在小部件或AlarmManager类中。 我将发布导致AlarmManager类中的错误的代码(即具有最少行的代码) 初始化警报的代码: Intent myIntent = new Intent(AppContextHelper.getContext(), ApodDownloader.class); mPendingIntent = PendingIntent.getBroadcast(AppContextHelper.getContext(), 0, myIntent, 0); AlarmManager alarmManager = (AlarmManager)AppContextHelper.getContext().getSystemService(Context.ALARM_SERVICE); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() + 10000, AlarmManager.INTERVAL_HOUR, mPendingIntent); AppContextHelper.java public class […]

将生日变成联系人数据的正确方法是什么?

背景 我正在尝试更新联系人数据,并将每个数据的生日。 问题 似乎对于我尝试的每个设备(我甚至没有尝试过那么多设备),插入有一个或多个这些问题: 查看/编辑联系人时,无法单击和编辑brithdate。 查看/编辑联系人时,显示的格式与用户输入生日时显示的格式不同 缺少一年,或完全错误的一年。 查看联系人时,未显示生日,但在编辑时,会显示生日。 另外,相反。 我试过的 我尝试过使用时间戳和完整的ISO8601格式(因为这个链接 ,意思是“yyyy-MM-dd HH:mm:ss”)。 我也试过“yyyy-MM-dd”,我尝试使用设备日期的默认格式。 所有人都有上述问题(每个问题至少有一个)。 这是一段代码: final Date birthdate = … // String birthdateStr = new SimpleDateFormat(“yyyy-MM-dd”).format(birthdate); // String birthdateStr = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”, Locale.getDefault()).format(birthdate); // String birthdateStr = new SimpleDateFormat(((SimpleDateFormat) java.text.DateFormat.getDateInstance(java.text.DateFormat.DEFAULT, Locale.getDefault())).toLocalizedPattern(),Locale.getDefault()).format(birthdate); String birthdateStr = Long.toString(birthdate.getTime()/1000); final Builder builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); builder.withValue(Data.RAW_CONTACT_ID, …) .withValue(ContactsContract.Data.MIMETYPE, […]

Ormlite或sqlite哪个对Android透视图有好处?

我很困惑哪个适合Android视角的Ormlite或sqlite 。 请你能给我一个建议,哪个更适合使用我们的Android应用程序。 并使易用和支持所有Android设备? 我想在我们的项目中使用ormlite,但在此之前我想确定它对我和我的应用程序是否有用。 如果有人在此之前使用过,请指导我。 我非常感谢你的想法.Thnaks

警告:不要硬编码“/ data /”; 请改用Context.getFilesDir()。getPath()

我开发了一个应用程序,我将数据库从assets文件夹复制到我的硬编码路径。 所以eclipse给了我警告: Do not hardcode “/data/”; use Context.getFilesDir().getPath() instead 我在谷歌搜索并find答案使用: Context.getFilesDir().getPath(); 并且硬编码不适用于每个设备,有些可能会出错或无法正常工作。 但通过实施上述我正在收到错误。 我的代码如下: private final Context myContext; 在这里得到警告 private static String DB_PATH = “/data/data/com.example.abc/databases/”; private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = “exampledb.sqlite”; static SQLiteDatabase sqliteDataBase; public DataBaseHelperClass(Context context) { super(context, DATABASE_NAME, null ,DATABASE_VERSION); this.myContext = context; } public […]

SQLiteDatabase:仅在值不存在时插入(不通过原始SQL命令)

我知道有一个SQL命令是这样的: IF NOT EXISTS ,但由于Android的SQLiteDatabase类有一些很好的方法,我想知道是否可以插入一个值,如果它不存在通过方法。 目前我正在使用它来插入一个String : public long insertString(String key, String value) { ContentValues initialValues = new ContentValues(); initialValues.put(key, value); return db.insert(DATABASE_TABLE, null, initialValues); } ( db是SQLiteDatabase一个实例。) 我尝试使用insertOrThrow()方法而不是insert() ,但它似乎与insert()完全相同。 也就是说,如果该值已经在行中,则会再次插入该值,因此该行现在具有两个相同值的值。

获取SQLite FTS3表的行ID

我创建了一个我在Android开发平台中使用的SQLite FTS3表( target是2.2, minVersion是8)。 例如,我创建了如下表: create virtual table person using fts3(first,last); 我知道当我将数据插入此表时,我将返回long ,这是插入的记录的行ID。 如何从此表中获取行ID? 如果我执行: select * from person 我为Cursor.getColumnColumnIndex(“rowid”);得到-1 Cursor.getColumnColumnIndex(“rowid”); 。 此外, Cursor.getColumnNames()仅显示两列(’first’和’last’)而不是’rowid’。 关于如何解决这个问题的任何建议?

引起:android.database.sqlite.SQLiteException:没有这样的表:(代码1)Android

我们的应用程序中有一个sqlite数据库。 它适用于所有用户,但很少遇到问题Caused by: android.database.sqlite.SQLiteException: no such table: generalSettings (code 1): , while compiling: select * from generalSettings error。 下面是我的sqlite帮助程序类,用于创建db和错误日志。 在assert/Master.db我们有表generalSettings 。 但在将其复制到设备后,表格丢失了。 这种情况仅发生在少数用户身上。 我搜索了解决方案,但我找不到确切的解决方案。 团队请帮我解决这个问题。 码: import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.io.StringWriter; import android.content.Context; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.net.Uri; import android.util.Log; public class InstallDB extends SQLiteOpenHelper { Context […]

从Android应用程序访问外部存储中的某个下载的.sqlite数据库

我试图在基于Android WebView的应用程序中实现离线地图function: 使用DownloadManager , 我从我们的网络服务器下载一个sqlite数据库文件 (像.mbtiles这样的结构) ,它包含地图图块图像的blob(“离线地图”)并通过它存储在android外部存储中 public void downloadMap() { downloadManager = (DownloadManager) getActivity().getSystemService(Activity.DOWNLOAD_SERVICE); DownloadManager.Request r = new DownloadManager.Request(Uri.parse(“http://sry.youtoknow.idontwant/map.sqlite”)); r.setDestinationInExternalFilesDir(getContext(), “map”, “map.sqlite”); downloadManager.enqueue(r); } 下载似乎非常有效。 我注册一个BroadcastReceiver来接收DownloadManager.ACTION_DOWNLOAD_COMPLETE并使用SharedPreferences将路径存储到“map.sqlite”。 要从JavaScript访问数据库以使用WebView的切片图像, 我通过检查URL中的自定义虚构模式名称customhttp:来拦截XHRequests : webView.setWebViewClient(new WebViewClient() { public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { String url = request.getUrl().toString(); if (!url.startsWith(“customhttp:”)) { return null; } else { SharedPreferences preferences = […]