用JDBC访问二进制类型的数据
public class BlobTest {
public static void main(String[] args) throws SQLException, IOException, ClassNotFoundException {
// create();
read();
}
// 从数据库读取二进制类型的数据
static void read() throws SQLException, IOException, ClassNotFoundException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2.建立连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "123456");
// 3.创建语句
ps = conn.prepareStatement("select big_bit from blob_test");
// 4.执行语句
rs = ps.executeQuery();
// 5.处理结果
while (rs.next()) {
Blob blob = rs.getBlob(1);
InputStream in = blob.getBinaryStream();
File file = new File("IMG_0002_bak.jpg");
OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
byte[] buff = new byte[1024];
for (int i = 0; (i = in.read(buff)) > 0;) {
out.write(buff, 0, i);
}
out.close();
in.close();
}
} finally {
if (rs != null) rs.close(); rs = null;
if (ps != null) ps.close(); ps = null;
if (conn != null) conn.close(); conn = null;
}
}
// 把二进制类型的数据(这里是一张图片)存入数据库
static void create() throws SQLException, IOException, ClassNotFoundException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2.建立连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "123456");
// 3.创建语句
String sql = "insert into blob_test(big_bit) values (?)";
ps = conn.prepareStatement(sql);
File file = new File("IMG_0002.jpg");
InputStream in = new BufferedInputStream(new FileInputStream(file));
ps.setBinaryStream(1, in, (int) file.length());
// 4.执行语句
int i = ps.executeUpdate();
in.close();
System.out.println("i=" + i);
} finally {
if (rs != null) rs.close(); rs = null;
if (ps != null) ps.close(); ps = null;
if (conn != null) conn.close(); conn = null;
}
}
}
分享到:
相关推荐
`MySQLUploader.java`文件可能包含处理MySQL数据库中图片或二进制数据的Java代码,使用JDBC连接,加载MySQL驱动,通过PreparedStatement执行SQL语句将二进制数据存入数据库。读取时,可以使用ResultSet的...
在关系型数据库如MySQL、PostgreSQL、Oracle和SQL Server中,BLOB是一个特殊的数据类型,用于存储大量的二进制数据,例如图片、音频或视频文件。在SQL Server中,这种类型被称为`VARBINARY(MAX)`,它允许存储最多2^...
- **创建表结构**:Oracle提供`BLOB`类型来存储二进制数据。创建`ImagesTable`,包含一个`BLOB`类型的`ImageBlob`字段。 - **保存图片**:类似于SQL Server,将图片读取为字节数组,然后使用`PL/SQL`过程或Java的...
在关系型数据库中,如MySQL、Oracle或SQL Server,通常有特定的数据类型用于存储二进制数据,如BLOB(Binary Large Object)、VARBINARY或IMAGE。这些数据类型能容纳任意大小的二进制流,适合存储图片。 三、从...
创建一个包含图片信息的表,至少需要两个字段:`id`(主键,用于唯一标识图片)和`image_data`(Blob类型,存储图片二进制数据)。 2. **图片上传**:当用户上传图片时,应用需要将图片文件读取为字节流,然后存入...
4. **二进制类型**:如`BLOB`(二进制大对象)、`BINARY`(二进制字符串)、`VARBINARY`(可变长度二进制字符串),在JDBC中通常映射为`java.sql.Blob`和`byte[]`。 5. **NULL类型**:`NULL`表示字段值为空,它在...
在调用存储过程时,我们可以使用ODBC、JDBC等方式来将二进制数据作为参数传递给存储过程。在这个文件中,我们使用了C API的方式来调用存储过程。具体来说,我们可以使用 MySQL 的C API来将二进制数据作为参数传递给...
这个“apache-activemq-5.15.15二进制包,安装包”包含了运行和配置ActiveMQ所需的所有组件,方便用户在本地计算机或服务器上快速部署和使用。该版本5.15.15是Apache ActiveMQ的一个稳定版本,提供了许多增强的功能...
- `BINARY`、`VARBINARY` 和 `LONGVARBINARY`:在 SQL 标准中定义的二进制数据类型,映射为 `java.sql.Types.BINARY`、`java.sql.Types.VARBINARY` 和 `java.sql.Types.LONGVARBINARY`。 - `RAW`:Oracle 中的二...
- `getBlob()`: 获取Blob类型的数据,返回一个java.sql.Blob对象,代表大二进制数据。 4. 高级类型的方法: - `getBigDecimal()`: 获取Decimal、Numeric类型的数据,返回一个BigDecimal对象,用于精确的浮点数值...
处理二进制数据时,可以使用`PreparedStatement.setBinaryStream()`将输入流设置为参数,而`ResultSet.getBinaryStream()`则返回一个表示BLOB数据的输入流。通常,我们还需要配合使用`java.io`类库中的`InputStream`...
BLOB用于存储非文本的二进制数据,如图片、音频和视频文件,而CLOB则用于存储大文本数据,如长篇文章或文档。 接着,文章详细讲述了JDBC在访问Oracle数据库中的LOB数据时的作用。JDBC是Java连接关系数据库的标准...
#### 十、用JDBC访问文本和二进制数据 - **文本数据**: - 将文本数据插入数据库。 - 从数据库中读取文本数据。 - **二进制数据**: - 插入图片等二进制数据。 - 从数据库中读取二进制数据。 #### 十一、JDBC...
在 Java 应用程序中使用 JDBC 访问数据库时,需要将 SQL 数据类型映射到 Java 类型,以便在 Java 应用程序和数据库之间读写数据。JDBC 提供了 getXXX 和 setXXX 方法集、registerOutParameter 方法和 Types 类来实现...
Blob(Binary Large OBject)是Oracle中的一种数据类型,用于存储大型二进制数据,例如图片、音频和视频等。在实际应用中,Blob类型数据需要使用特殊的处理方法来实现动态访问和存储。 2.Java存储过程 Java存储...
这种转换发生在客户端,因此需要在客户端安装一些二进制代码。 3. **类型3:网络协议全Java驱动** - 将JDBC调用转换成独立于任何原生数据库协议的网络协议。中间件软件运行在服务器上,将网络协议转换为原生数据库...
Oracle数据库是一种广泛应用的关系型数据库管理系统,它支持多种数据类型,包括Blob(Binary Large Object)类型,用于存储大块二进制数据,如图片、视频或文档。本篇文章将详细介绍如何将Oracle数据库中的Blob类型...
JDBC支持各种数据类型,包括基本数据类型(如INT、VARCHAR)、日期类型(DATE、TIME、TIMESTAMP)、大文本类型(CLOB)和大二进制对象(BLOB)。 #### 六、DAO 设计模式 DAO(Data Access Object)设计模式用于...
SQL Server 2008 JDBC驱动还支持一些高级特性,如读写分离、分布式事务、大数据类型处理(如XML和二进制数据)、JDBC批处理以及SQL Server特有的功能(如Service Broker或Integration Services)。 9. **错误处理*...