blob类型

1.BLOB
BLOB全称为二进制大型对象(Binary Large Object)。它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节
2.CLOB
CLOB全称为字符大型对象(Character Large Object)。它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集。可存储的最大大小为4G字节

通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便。


/**
* <把字符串转换成字节数组然后在封装成字符串>
* <功能详细描述>
* @param chinese
* @return
* @see [类、类#方法、类#成员]
*/
public static String chineseToString(String chinese)
{
if (Global.isEmpty(chinese))
{
return "";
}
else
{
// 定义StringBuffer
StringBuffer sb = new StringBuffer();

// 把传进来的字符串转换成字节数组
byte[] b = chinese.getBytes();

byte[] temp = null;

// 遍历字节数组,把字节数组转换成字符串
for (int i = 0; i < b.length; i++)
{
temp = new byte[4];
temp[0] = b[i];
temp[1] = 0;
temp[2] = 0;
temp[3] = 0;
sb.append(lBytesToInt(temp));
if (i < b.length - 1)
{
sb.append("@");
}
}

return sb.toString();
}
}

/**
* <把字节数组封装成的字符串转换成原来的字符串>
* <功能详细描述>
* @param stc
* @return
* @see [类、类#方法、类#成员]
*/
public static String stringToChinese(String stc)
{
// 如果传递的字符串为空则直接返回空
if (Global.isEmpty(stc))
{
return "";
}
else
{
// 分割字符串
String[] s = stc.split("@");
if (s.length > 0)
{
// 循环构造BYTE数组
byte[] b = new byte[s.length];
for (int i = 0; i < s.length; i++)
{
b[i] = (byte)Integer.parseInt(s[i]);
}

// 根据BYTE数组构造字符串
return new String(b);
}
else
{
return "";
}
}
}

/**
* 将低字节数组转换为int
* @param b byte[]
* @return int
*/
public static int lBytesToInt(byte[] b)
{
int s = 0;
for (int i = 0; i < 3; i++)
{
if (b[3 - i] >= 0)
{
s = s + b[3 - i];
}
else
{
s = s + 256 + b[3 - i];
}
s = s * 256;
}
if (b[0] >= 0)
{
s = s + b[0];
}
else
{
s = s + 256 + b[0];
}
return s;
}
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要使用 JdbcTemplate 操作 Blob 类型,可以按照以下步骤进行操作: 1. 首先,创建一个 `DataSource` 对象,用于连接到数据库。可以使用 Spring 的 `DriverManagerDataSource` 或者其他适合您的数据源实现。 2. 然后,创建一个 `JdbcTemplate` 对象,将数据源作为参数传入构造函数。 ```java JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); ``` 3. 接下来,可以使用 `jdbcTemplate` 对象执行 SQL 查询和更新操作。对于 Blob 类型的操作,可以使用 `jdbcTemplate` 的 `execute` 方法,并传入一个 `PreparedStatementCallback` 对象。 ```java jdbcTemplate.execute("INSERT INTO your_table (blob_column) VALUES (?)", new PreparedStatementCallback<Object>() { @Override public Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException { // 将 Blob 数据设置到 PreparedStatement 中 Blob blob = createBlobFromData(); // 创建 Blob 对象,可以根据需要自己实现 ps.setBlob(1, blob); ps.executeUpdate(); return null; } }); ``` 在上面的示例中,我们通过 `setBlob` 方法将 Blob 数据设置到 PreparedStatement 中,并执行更新操作。 4. 当需要从数据库中获取 Blob 类型的数据时,可以使用 `jdbcTemplate` 的 `query` 方法,并传入一个 `RowMapper` 对象。 ```java byte[] blobData = jdbcTemplate.query("SELECT blob_column FROM your_table WHERE id = ?", new Object[]{id}, new ResultSetExtractor<byte[]>() { @Override public byte[] extractData(ResultSet rs) throws SQLException, DataAccessException { if (rs.next()) { Blob blob = rs.getBlob("blob_column"); if (blob != null) { return blob.getBytes(1, (int) blob.length()); } } return null; } }); ``` 在上面的示例中,我们通过 `getBlob` 方法获取 Blob 数据,并使用 `getBytes` 方法将其转换为字节数组。 这样,您就可以使用 JdbcTemplate 操作 Blob 类型的数据了。请注意,上述示例中的表名、列名和参数均需要根据您的实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值