标签: android-sqlite

Android:批量插入,不推荐使用InsertHelper时

有很多答案和教程使用InsertHelper在SQLiteDatabase中快速批量插入.
但是从API 17开始,不推荐使用InsertHelper.

什么是在Android SQLite中批量插入大量数据的最快方法?

到目前为止,我最关心的是SQLiteStatement使用起来不太舒服,其中InsertHelper具有绑定列和绑定值,这有点微不足道.

sqlite android bulkinsert android-contentprovider android-sqlite

18
推荐指数
1
解决办法
9436
查看次数

java.lang.IllegalStateException:尝试重新打开已关闭的对象(尝试关闭)

public int getRecordsCount() {
        String countQuery = "SELECT  * FROM " + TABLE_LOGIN;

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        if(cursor != null && !cursor.isClosed()){
            cursor.close();
        }   
        // return count

        return cursor.getCount();
    }
Run Code Online (Sandbox Code Playgroud)

我试图获取数据库中的总记录数,但数据库每次都会崩溃java.lang.IllegalStateException: attempt to re-open an already-closed object: android.database.sqlite.SQLiteQuery (mSql = SELECT * FROM login).请帮我解决错误

  03-05 22:23:14.208: E/AndroidRuntime(4988): FATAL EXCEPTION: main
    03-05 22:23:14.208: E/AndroidRuntime(4988): java.lang.IllegalStateException: attempt to re-open an already-closed object: android.database.sqlite.SQLiteQuery (mSql = SELECT  * FROM login) 
    03-05 22:23:14.208: E/AndroidRuntime(4988):     at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:34)
    03-05 …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

18
推荐指数
2
解决办法
4万
查看次数

如何在没有root的Android设备上检查数据库

我正在开发一个应用程序,我使用sqllite3数据库来存储值.我有Nexus S和Nexus 7都是无根设备.如何为我的应用程序获取数据库以进行调试.

我试过(1)我尝试过这里提到的所有方法

adb shell
run-as app.package.name \
cp /data/data/package.name/databases/application.sqlite /sdcard/
exit
adb pull /sdcard/application.sqlite ~/
Run Code Online (Sandbox Code Playgroud)

这说cp没找到..

(2)http://developer.android.com/tools/help/adb.html#sqlite

adb -s emulator-5554 shell
# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions
.... enter commands, then quit...
sqlite> .exit 
Run Code Online (Sandbox Code Playgroud)

sqlite android adb android-contentprovider android-sqlite

18
推荐指数
4
解决办法
3万
查看次数

Sugar ORM不会创建表

我正在开发一个独立的库项目,需要持久化一个简单的模型.这是我的SugarRecord样子:

/**
 *  Keeping track of previously received messages by ID
 */

public class MessageRequestIdModel extends SugarRecord {

    protected String messageRequestId;

    public MessageRequestIdModel() {

    }

    public MessageRequestIdModel(String messageRequestId) {
        this.messageRequestId = messageRequestId;
    }

    public String getMessageRequestId() {
        return this.messageRequestId;
    }

    public static boolean exists(String id) {
        return MessageRequestIdModel.find(
                MessageRequestIdModel.class,
                "messageRequestId = ?",
                id
        ).size() != 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

在存储库类中,我试图通过调用此方法来持久化它:

@Override
public void save(MessageRequestId messageRequestId) {
    new MessageRequestIdModel(messageRequestId.getId()).save();
}
Run Code Online (Sandbox Code Playgroud)

我现在尝试通过使用android.test.InstrumentationTestCase我传递Context给Sugar 的地方来测试它,如下所示:

SugarContext.init(getInstrumentation().getContext());
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,这会导致此错误:(截断以使此问题简洁易读)

android.database.sqlite.SQLiteException: no …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-testing android-sqlite sugarorm

18
推荐指数
2
解决办法
1万
查看次数

如何在室内持久性库中插入图像?

我正在为我的android应用程序使用房间持久性库,现在我必须在我的数据库中插入图像.我成功地为原始数据类型定义了@Entity.并且还通过转换器类,我存储了所有对象,日期,时间.现在我必须存储Image.我无法理解我们如何定义列信息和实体以及我们如何插入数据以及从表中读取数据.

插入单行的数据的最大大小是多少?Android SQLite中一个字段中数据的最大和最小大小是多少?

sqlite android android-sqlite android-room

18
推荐指数
3
解决办法
2万
查看次数

如何开始使用SQLCipher for android?

我需要使用SQLCipher for android ...我已经使用SQLite创建了我的应用程序,并希望将其转换为SQLCipher.

问题是,我对SQLCipher一无所知.

我在这个链接中读过它:http://sqlcipher.net/sqlcipher-for-android/

但我还是不太清楚.我想知道你是否可以为Android教程提供一些基本的sqlcipher,其中所有内容都是从绝对基础知识中轻松教授的.

谢谢!

database android sqlcipher android-sqlite

17
推荐指数
2
解决办法
2万
查看次数

Phonegap/SQLite没有CacheGroups,Caches,Origins和DeletedCacheResources的表错误

我有一个使用SQLite的PhoneGap应用程序.我正在初始化和创建从代码生成的数据库和表,并且应用程序正在针对这些表运行查询.

奇怪的是,在运行应用程序时,我在LogCat中看到以下错误:

SQLiteLog (1) no such table: CacheGroups
SQLiteLog (1) no such table: Caches
SQLiteLog (1) no such table: Origins
SQLiteLog (1) no such table: DeletedCacheResources
Run Code Online (Sandbox Code Playgroud)

据我所知,这些是SQLite使用的本机数据库表,但没有生成.我有什么想法可以解决这个问题?

sqlite cordova android-sqlite

17
推荐指数
1
解决办法
1689
查看次数

将SQLite转换为JSON

有没有办法将sqlite转换为json?所有其他问题是解析json并保存到sqlite.我似乎无法找到任何参考,请帮助我.

我在应用程序内部有一个sqlite数据库,我需要它转换为json,升级db版本,解析早期转换的json并添加另一个表.关于我该怎么做的任何建议?

提前致谢.

android android-sqlite android-json

17
推荐指数
3
解决办法
3万
查看次数

Android获取数据库磁盘映像格式错误(代码11)错误

在我的应用程序中,我得到这个数据库磁盘映像是一些用户的格式错误(代码11)错误.我用Google搜索并了解到,当数据库映像格式错误时,Android会删除它并重新创建新的数据库文件,这对某些用户来说正在发生.

这里的问题是10个用户中的我得到这个错误,db只为2-3个用户重新创建,我无法在logcat中得到错误,为什么会发生这种情况.如果db对10个用户的格式错误,那么为什么它不为所有10个用户重新创建数据库仅为2-3个用户?有人能指出我正确的方向如何处理它?

更新:我仍然无法重现问题,但我能够得到一些日志,他们在这里

08-28 08:35:44.847 E/SQLiteLog(15123): (11) database corruption at 
line 65088 of [00bb9c9ce4]
08-28 08:35:44.847 E/SQLiteLog(15123): (11) statement aborts at 67      
08-28 08:35:44.857 E/DefaultDatabaseErrorHandler(15123): Corruption 
reported by sqlite on database: 
/data/data/com.retail.posmaster/databases/GrofersRetail
08-28 08:35:45.377 D/dalvikvm(15123): GC_EXPLICIT freed 2639K, 62% 
free 7479K/19228K, paused 4ms+8ms, total 82ms
08-28 08:35:45.727 E/DefaultDatabaseErrorHandler(15123): !@ Delete old 
.mark file
08-28 08:35:45.737 E/DefaultDatabaseErrorHandler(15123): !@ DB 
Corruption has happened before this
08-28 08:35:45.757 E/DefaultDatabaseErrorHandler(15123): !@ DB 
Corruption has happened before this
Run Code Online (Sandbox Code Playgroud)

android sqliteopenhelper android-sqlite

17
推荐指数
1
解决办法
4015
查看次数

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

我试图在基于Android WebView的应用程序中实现离线地图功能:

使用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);
}
Run Code Online (Sandbox Code Playgroud)

下载似乎工作得很好. 我注册了一个BroadcastReceiver接收DownloadManager.ACTION_DOWNLOAD_COMPLETE并存储"map.sqlite"的路径使用SharedPreferences.

要从JavaScript访问数据库以使用中的tile图像WebView,通过检查customhttp:URL中的自定义虚构模式名称来拦截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 = PreferenceManager.getDefaultSharedPreferences(getContext());
            SQLiteDatabase db = SQLiteDatabase.openDatabase(preferences.getString("map_uri", Environment.getExternalStorageDirectory().getPath() + "berlin.sqlite"), null, SQLiteDatabase.OPEN_READONLY); …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

17
推荐指数
1
解决办法
547
查看次数