Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:Sqlite因大水滴而崩溃_Android_Sqlite_Crash_Large Files - Fatal编程技术网

Android:Sqlite因大水滴而崩溃

Android:Sqlite因大水滴而崩溃,android,sqlite,crash,large-files,Android,Sqlite,Crash,Large Files,第一篇文章在这里,所以请容忍我,如果我有什么错误 我正在尝试将应用程序的图像存储在sqlite数据库中。图像应该存储为blob(这是个坏主意吗?)。执行此操作的代码如下所示: public long createPicture(String title, byte [] thumb, byte [] imageData) { ContentValues data = new ContentValues(); data.put(T_KEY_TITLE, title);

第一篇文章在这里,所以请容忍我,如果我有什么错误

我正在尝试将应用程序的图像存储在sqlite数据库中。图像应该存储为blob(这是个坏主意吗?)。执行此操作的代码如下所示:

public long createPicture(String title, byte [] thumb, byte [] imageData) {
    ContentValues data = new ContentValues();
    data.put(T_KEY_TITLE, title);            
    data.put(T_KEY_CONTENT, imageData);       // <-- blob in the db 
    data.put(T_KEY_THUMB, thumb);

    // db is an SQLiteDatabase
    return db.insert(TABLE_PICS, null, data); // <-- Crash occurs on this line
}
public long createPicture(字符串标题,字节[]拇指,字节[]图像数据){
ContentValues数据=新的ContentValues();
数据输入(T_键_标题,标题);

data.put(T_KEY_CONTENT,imageData);//我不建议将整个图像存储在数据库中。相反,为什么不将图像uri或路径存储在数据库中,并将实际图像数据存储在内容提供程序中

因此,要存储您的图像,它将是:

Uri u;
File fi = new File("/sdcard/tmp");
try {
    u = Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), fi.getAbsolutePath(), null, null));
    imageSaveName1 = u.toString();

}
您可以将imageSaveName1存储在数据库中,然后使用:

Bitmap b = android.provider.MediaStore.Images.Media.getBitmap(getContentResolver(), imageSaveName1);

对于存储图像,通常的最佳做法是将其存储在外部(SD卡或其他外部存储方式)。将为您提供存储大型文件的位置,或者如果您是API 8或更高版本


数据库事务可能出现任何数量的错误(空间不足、事务超时等)。可能最好将图像的URI存储在数据库中,然后将实际图像放置到外部位置。

崩溃有点模糊,您是否收到堆栈跟踪和错误消息;如果没有,您是否可以获得类似的信息并发布?我对安卓开发有点陌生,但我从哪里获得有用的错误消息?何时它崩溃了它只是给了我一个“意外停止”的东西。我使用的是一部真正的手机,有可能从中获取堆栈跟踪吗?@Gordy:你可以通过USB连接你的手机,并在Android SDK中使用类似DDMS(我的首选)的东西来监视logcat。或者,如果你使用Eclipse,它也有一个DDMS透视图来做同样的事情。