如何把一个字节数组存到数据库里,然后再读出来

如何把一个字节数组存到数据库里,然后再读出来,第1张

保存字节数组到数据库分两步:

第一、利用FileInputStream.read(byte[])方法把内容读取到byte[]数组中,比如图片是由二进制数组成的,就可以定义为一个字节数组。

第二、在数据库中对应记录字段应该设置为blob类型,这样就能够顺利保存了

事例代码如下:

PreparedStatement stmt = connection.generatePreparedStatement("INSERT INTO ... ")

stmt.setBytes(1, yourByteArray)

其中,yourByteArray是你读出来的字符数组。

将byte数组存入数据库时出现null值,可能是由于数据库中没有足够的空间来存储byte数组,或者数据库中的字段类型不正确,或者byte数组的长度超过了数据库中字段的最大长度。因此,在将byte数组存入数据库之前,应该先检查数据库中的字段类型是否正确,并确保byte数组的长度不超过数据库中字段的最大长度。

在进行Android开发过程中,我们经常会接触到Drawable对象(官方开发文档:A Drawable is a general abstraction for "something that can be drawn."),那么,若要使用数据库来进行存储及读取.

@Override

public void onCreate(SQLiteDatabase database) {

executeSQLScript(database, "create.sql")

}

private void executeSQLScript(SQLiteDatabase database, string dbname){

ByteArrayOutputStream outputStream = new ByteArrayOutputStream()

byte buf[] = new byte[1024]

int len

AssetManager assetManager = context.getAssets()

InputStream inputStream = null

try{

inputStream = assetManager.open(dbname)

while ((len = inputStream.read(buf)) != -1) {

outputStream.write(buf, 0, len)

}

outputStream.close()

inputStream.close()

String[] createScript = outputStream.toString().split("")

for (int i = 0i <createScript.lengthi++) {

String sqlStatement = createScript[i].trim()

// TODO You may want to parse out comments here

if (sqlStatement.length() >0) {

database.execSQL(sqlStatement + "")

}

}

} catch (IOException e){

// TODO Handle Script Failed to Load

} catch (SQLException e) {

// TODO Handle Script Failed to Execute

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6906966.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-30
下一篇 2023-03-30

发表评论

登录后才能评论

评论列表(0条)

保存