Articles of SQLite

SQLiteexception:没有这样的表错误

可能重复: Android Sqlite – “没有这样的表”错误 我们正在尝试在Android上开发应用程序。 我们正在使用SQLite数据库和手机 SQLiteException:没有这样的表。 它在模拟器上工作正常。 任何人都可以提供任何意见吗?

从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 = […]

Android SQLiteOpenHelper无法打开数据库文件

我知道这个话题之前已被讨论过了。 但我无法find问题的解决方案,所以我会再问一次。 我有创建数据库的问题。 我复制了SQLiteOpenHelper的实现: public class DBCreator extends SQLiteOpenHelper { private static final String DATABASE_NAME = “servision.db”; private static final int DATABASE_VERSION = 1; private static final String INFO_TABLE =”create table INFO(key text,value text);”; public static final String GATEWAYS_TABLE = “GATEWAYS”; // Table name public static final String TABLE = “events”; // Columns public static […]

如何避免SQLiteException锁定错误

我正在开发一个Android应用程序。 它有多个线程读取和写入Android SQLite数据库。 我收到以下错误: SQLiteException:错误代码5:数据库已锁定 我理解SQLite会在插入/更新时锁定整个数据库,但在我运行select查询时插入/更新时似乎只会发生这些错误。 select迭代返回一个光标,当我迭代它时,它会被打开一个非常诡计(几秒钟)。 如果select查询没有运行,我永远不会得到锁。 我很惊讶select可以锁定数据库。 这是可能的,还是还有其他事情发生? 什么是避免这种锁定的最佳方法?

使用内存中的sqlite android

我一直在阅读,浏览,搜索很多,我已经多次来回交叉堆栈流,我尽可能地缩小了我的问题。 我唯一不明白的是如何充分利用内存中的SQLite数据库。 这是我的情况 – 我有一个加密的SQLite数据库,我在加载我的应用程序时解密(这部分可以肯定)。 我与数据库交互的类确实可以使用普通数据库。 因此,为了简化,一切都是完美无缺的,从内部手机内存加载的普通数据库,但我不知道如何或在何处将解密的数据库存储在内存中,因此它将被解释为普通数据库。 我想我应该在super(context, null, null, 3);放置null而不是名称super(context, null, null, 3); 并使用:memory:而不是SQLiteDatabase.openDatabase()中的路径,但我仍然不完全理解。 它说它找不到android_metadata表,但我确信数据库是应该的。 希望我对此很清楚:)

可以在单个execSQL查询中指定的SQLvariables的限制是多少

我正在努力提高我的android数据库插入速度。 我目前正在做的是生成一个字符串,如: SELECT ? as title, ? as musician_id, ? as album_id, ? as genre UNION SELECT ?, ?, ?, ? UNION SELECT ?, ?, ?, ? UNION SELECT ?, ?, ?, ? UNION SELECT ?, ?, ?, ? UNION SELECT ?, ?, ?, ? 然后执行它 SQLiteDatabase database = //initialized in some way String insertQuery; […]

分配游标时内存不足

我有一个我无法弄清楚的记忆问题。 我有一个类可以完成所有数据库检索工作。 我遇到的错误如下: android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. # Open Cursors=733 (# cursors opened by this proc=733) 执行此操作时发生内存分配错误: mDatabaseInterface.getGraphForLevel(level); 我知道这是一个漏洞,因为我大约每2.5秒调用一次这种方法,并且5或6次首次呼叫很容易通过。 现在这里是我的DatabaseInterface类中的方法: public Graph getGraphForLevel(Level level) { //get the nodes ArrayList nodes = new ArrayList(Arrays.asList(this.getNodesWithLevel(level))); //get the edges ArrayList edges = new ArrayList(Arrays.asList(this.getEdgesWithNodes(nodes))); return new Graph(nodes, edges); } public Node[] getNodesWithLevel(Level level) { […]

如何在SQLite查询中忽略重音(Android)

我是adnroid的新手,我正在使用sqlite进行查询,但问题是当我在字符串中使用重音时。 例如: AAA AAA AAA AAA AAA AAA 如果我做: SELECT * FROM TB_MOVIE WHERE MOVIE_NAME LIKE ‘%a%’ ORDER BY MOVIE_NAME; 回归: AAA aaa(它忽略了其他人) 但如果我这样做: SELECT * FROM TB_MOVIE WHERE MOVIE_NAME LIKE ‘%à%’ ORDER BY MOVIE_NAME; 回归: ààà(忽略标题“ÀÀÀ”) 我想在SQLite DB中选择字符串而不关心重音和大小写。 请帮忙。

原始SQLite游标上的registerContentObserver()

我见过的所有使用registerContentObserver()的例子都是通过ContentProvider接口完成的。 但是Cursor有一个registerContentObserver()调用,所以我想也许Android人们已经把一些深层魔法放在一起,当活动结果集中的一行改变时,它允许在SQLite游标上获得更新。 我做错了,或者没有这样的魔法。 这是我正在使用的代码,期望当我点击按钮更新第1行中的值时,我会得到一个onChange()回调。 有任何想法吗? public class MainActivity extends Activity { private static final String DATABASE_NAME = “test.db”; public static final String TAG = “dbtest”; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button make = (Button)findViewById(R.id.btn_make_record); make.setOnClickListener(new OnClickListener() { public void onClick(View v) { MyOpenHelper […]

如何从SQLite android中的表中删除一行?

我这样做了,但是没有用。 我正在force close 。 public boolean favoriteDelete(int id) { return database.delete(“FavoriteData”, “Google” + “=” + id, null) > 0; }