我想知道在 SQLite 数据库中保存图像(商业照片)的方法是什么。我有一个应用程序,它显示了我所居住城市的所有企业。
这是创建表的代码:
public static final String TABLE_CREATE = //METODO PARA CREAR TABLA
"CREATE TABLE " + TABLE_NEGOCIOS + " (" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_NOMBRE + " TEXT, " +
COLUMN_DIRECCION + " TEXT, " +
COLUMN_DESCRIPCION + " TEXT, " +
COLUMN_CATEGORIA + " TEXT " +
")";
我可以使用什么数据类型来存储图像?以及如何插入它?
在我的数据构造函数中,它将返回什么数据类型的图像?
这是我的代码:
public class Negocio implements Serializable {
long id;
String nombre;
String descripcion;
String domicilio;
String categoria;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public String getDomicilio() {
return domicilio;
}
public void setDomicilio(String domicilio) {
this.domicilio = domicilio;
}
public String getCategoria() {
return categoria;
}
public void setCategoria(String categoria) {
this.categoria = categoria;
}
public String toString() { return nombre ; }
}
要插入数据,我手动进行:
private void createdata(){
Negocio negocio = new Negocio();
negocio.setNombre("La buena atencion");
negocio.setDomicilio("H Yrigoyen");
negocio.setDescripcion("Carniceria, los mejores cortes");
negocio.setCategoria("carniceria");
dataSource.create(negocio);
negocio = new Negocio();
negocio.setNombre("Citadella");
negocio.setDomicilio("H Yrigoyen");
negocio.setDescripcion("Panaderia del centro con buenas masas");
negocio.setCategoria("panaderia");
dataSource.create(negocio);
negocio = new Negocio();
negocio.setNombre("La union");
negocio.setDomicilio("H Yrigoyen");
negocio.setDescripcion("Panaderia que abre poco dias");
negocio.setCategoria("panaderia");
dataSource.create(negocio);
negocio = new Negocio();
negocio.setNombre("Electronica John");
negocio.setDomicilio("Alem");
negocio.setDescripcion("De todo");
negocio.setCategoria("electronica");
dataSource.create(negocio);
negocio = new Negocio();
negocio.setNombre("La maga");
negocio.setDomicilio("Roca");
negocio.setDescripcion("comidas rapidas");
negocio.setCategoria("Casa de comida");
dataSource.create(negocio);
}
我想为我将要做的每项业务添加一个业务图像或徽标,这将是大约 100 个业务。我听取建议,这很有帮助,因为我从不使用 SQLite 中的图像。谢谢!!
在 SQLite 3 中,您可以使用 affinity 定义列
BLOB
,这是Binary Large Object的首字母缩写词,顾名思义,其目的是以您选择的格式存储二进制信息,例如图像。对表创建代码的适应将是这样的:
在java中,这个字段可以表示为一个字节数组。根据定义,数组是可变长度的。然后,您必须向您的类中添加一个代表业务的成员,以便它包含一个字节数组,即图像。
改编自SQLite 教程的示例,用于读取磁盘映像,如下所示:
有了这个程序,每个业务的准备工作可以如下:
您应该知道 BLOB 在 SQLite 中具有最大大小,它不能在每一行中存储大量数据。更多信息可以在 SQLite文档的限制中的字符串或 blob 部分的最大长度中找到。