java—将图像插入sql server并检索它

uttx8gqw  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(213)

我想在sql server中添加一些图像。我的问题是从插入或获取图像代码?
目前,我检索图像的imageview是空的。
下面是我插入图像的代码:

else {
    DatabaseHelper mDatabaseHelper = new DatabaseHelper(MainActivity.this);
    Cursor cursor2 = mDatabaseHelper.GetPath();
    while (cursor2.moveToNext()) {

        Bitmap bitmap = BitmapFactory.decodeFile(cursor2.getString(0));
        ByteArrayOutputStream blob = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100 /* Ignored for PNGs */ , blob);
        byte[] bitmapdata = blob.toByteArray();
        String id = getIntent().getStringExtra("id");
        String query = "INSERT INTO StoresData VALUES('" + arabic + "','" + english + "','1','1','1','1','1','','" + lat + "','" + longi + "','" + mob + "','','','','','','','','0','','','','" + bitmapdata + "','" + user + "','" + passwords + "','0',NULL,'" + id + "')";
        Statement stmt = con.createStatement();
        stmt.executeUpdate(query);

        Cursor cursor = mDatabaseHelper.DeleteDataOfTableImagesAr();
        while (cursor.moveToNext()) {
            Toast.makeText(MainActivity.this, "Deleted images", Toast.LENGTH_LONG).show();
        }
    }
}

取回图像:

Blob blob = parkingList.get(position).getStoreicon();
if (blob != null) {
    byte[] byteArray = new byte[0];
    try {
        int length = (int) blob.length();
        byteArray = blob.getBytes(1, length);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    Bitmap bm = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
    intent.putExtra("storeicon", bm);
} else {

}

是的,我正在把图像放到一个列表视图中。
检索和获取图像是在两个不同的应用程序中完成的,这就是为什么我没有使用sqlite。

pxiryf3j

pxiryf3j1#

我不能添加评论(声誉太低),但我认为

int length = (int) blob.length();
    byteArray = blob.getBytes(1, length);

长度如您所说是可以的,.getbytes从1开始到长度,并将其存储在一个数组中。。。但是:

Bitmap bm = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length)

不应该

Bitmap bm = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length - 1)

? 长度从1开始,数组从0开始。

相关问题