gpt4 book ai didi

java - 如何优化将具有多个字符串和图像的条目插入到 SQLite 数据库中

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:03 24 4
gpt4 key购买 nike

我定义了一个方法来在我的数据库助手类中添加一个条目并使用它向数据库中插入数据,但它不起作用。这是我在 databasehelper 类中定义的方法:

 public void createchannelEntry(ChannelPoster channel) {
openDB();
ByteArrayOutputStream out = new ByteArrayOutputStream();
channel.getPoster().compress(Bitmap.CompressFormat.PNG, 100, out);
ContentValues cv = new ContentValues();
cv.put(KEY_POSTER, out.toByteArray());
cv.put(KEY_CHANNEL, channel.getChannel());
cv.put(KEY_PATH, channel.getPath());
cv.put(KEY_DBLINK, channel.getDBlink());

mDb.insert(channelS_TABLE, null, cv);
closeDB();
}

这是我插入数据的方式

Bitmap sherlock = BitmapFactory.decodeResource(getResources(), R.drawable.sherlock);

mDB.createchannelEntry(new ChannelPoster(sherlock, "aa" ,"ll" ,"ha" ));

我有一个 JavaBean 用于保存条目

public class ChannelPoster {
private Bitmap poster;
private String channel;
private String path;
private String dblink;

public ChannelPoster(Bitmap pi, String c, String p, String d) {
poster = pi;
channel = c;
path = p;
dblink = d;
}

public Bitmap getPoster() { return poster; }
public String getChannel() { return channel; }
public String getPath() { return path; }
public String getDBlink() { return dblink; }
}

而且因为我是一个一个地添加条目,所以程序运行很慢,所以有没有更快的方法来插入许多条目?喜欢在一次 Activity 中获得所有这些吗?

最佳答案

我建议不要将图像保存在数据库中,而是将它们保存为文件,并在数据库中保存它们的路径(使用普通的 TEXT 字段)。

如果您不想这样做,有两件事仍然可以大大提高您的处理速度:

  • 围绕所有插入打开和关闭数据库
  • 使用交易

类似的东西:

SQLiteDatabase db = openDB();
db.beginTransaction();

try {
// Add here the loop with all your inserts
db.setTransactionSuccessful();
} finally {
db.endTransaction(); // will rollback and cancel the inserts if not marked as successful
db.close();
}

(finally 是为了确保您关闭事务和连接,即使它在插入期间以某种方式失败:在这种情况下,ALL 您的插入将被取消)

关于java - 如何优化将具有多个字符串和图像的条目插入到 SQLite 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8382932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com