String sql4 = "CREATE TABLE bookifo(bookid INTEGER PRIMARY KEY AUTOINCREMENT,bookname TEXT, bookintro TEXT, author TEXT, bookpress TEXT, price decimal(10,2), qty INTEGER, image nvarchar(80), categoryid TEXT, FOREIGN KEY(categoryid) REFERENCES bookcategory(categoryid))"; db.execSQL(sql4); db.execSQL("insert into bookifo(bookname, bookintro, author, bookpress, price, qty, image, categoryid) values('马克思主义基本原理','马克思主义基本原理','逄锦聚,陶得麟','高等教育出版社','23.00','10','R.raw.book1','1')"); Android使用sqlite数据库创建book表,book表有字段image varchar(80)怎么把drawable里面的图片在创建表后insert进表里面
时间: 2024-01-01 12:03:30 浏览: 118
对于已经创建的表,如果要插入drawable中的图片,可以使用上面提供的代码将图片转换为字节数组,然后将字节数组转换为Base64编码字符串,将其作为字符串插入到数据表中。以下是一个示例代码:
```java
// 获取drawable里的图片
Drawable drawable = getResources().getDrawable(R.drawable.my_image);
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
// 将图片转换为字节数组
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] imageBytes = stream.toByteArray();
// 将字节数组转换为Base64编码字符串
String imageString = Base64.encodeToString(imageBytes, Base64.DEFAULT);
// 插入数据
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("bookname", "马克思主义基本原理");
values.put("bookintro", "马克思主义基本原理");
values.put("author", "逄锦聚,陶得麟");
values.put("bookpress", "高等教育出版社");
values.put("price", 23.00);
values.put("qty", 10);
values.put("image", imageString);
values.put("categoryid", "1");
db.insert("bookifo", null, values);
```
在上面的代码中,首先获取drawable里的图片,然后将其转换为字节数组,并使用Base64编码将其转换为字符串。接着,创建一个 `ContentValues` 对象,将转换后的字符串插入到 `image` 字段中。最后调用 `insert` 方法将数据插入到 `bookifo` 表中。