将字符串存入BLOB字段

将String字符串存入BLOB字段

1.获取连接

/**
	 * 获取连接
	 * 
	 * @return
	 */
	public Connection getConn() {
		Connection conn = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(url);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;

	}

2.插入信息

/**
	 * 将信息存入BLOB字段
	 * 
	 * @param id
	 * @param taskInfo
	 * @throws SQLException
	 * @throws IOException
	 */
	public void insertBlob(String id, String taskInfo) throws SQLException, IOException {
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		Connection con = null;
		try {
			//获取连接
			con = getConn();
			ByteArrayInputStream stream = null;
			pstmt = con.prepareStatement("update tableName set blobCol=? where id=?");
			stream = new ByteArrayInputStream(taskInfo.getBytes());
			pstmt.setBinaryStream(1, stream, stream.available());
			pstmt.setInt(2, Integer.valueOf(tpId));
			pstmt.executeUpdate();

		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			// 关闭相应数据库连接
			closeAll(rs, pstmt, con);
		}
	}

3.关闭连接

/**
	 * 关闭连接
	 * 
	 * @param rs
	 * @param stmt
	 * @param conn
	 */
	public void closeAll(ResultSet rs, Statement stmt, Connection conn) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
在C#中,可以使用`System.IO.Compression`命名空间中的`GZipStream`类将字符串进行Gzip压缩,然后将压缩后的数据存入MySQL数据库中。以下是一个简单的示例代码: ```csharp using System; using System.IO; using System.IO.Compression; using MySql.Data.MySqlClient; class Program { static void Main(string[] args) { string inputString = new string('a', 2_000_000); // 生成一个长度为2M的字符串 // 压缩字符串 byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(inputString); byte[] compressedBytes; using (var outputStream = new MemoryStream()) { using (var gzipStream = new GZipStream(outputStream, CompressionMode.Compress)) { gzipStream.Write(inputBytes, 0, inputBytes.Length); } compressedBytes = outputStream.ToArray(); Console.WriteLine($"压缩后大小:{compressedBytes.Length}"); // 输出压缩后的大小 } // 存入MySQL数据库 string connectionString = "server=localhost;user=root;password=123456;database=test;"; using (var connection = new MySqlConnection(connectionString)) { connection.Open(); var command = connection.CreateCommand(); command.CommandText = "INSERT INTO `data` (`id`, `data`) VALUES (@id, @data)"; command.Parameters.AddWithValue("@id", 1); command.Parameters.AddWithValue("@data", compressedBytes); command.ExecuteNonQuery(); } } } ``` 在上面的代码中,我们首先生成一个长度为2M的字符串,然后使用`GZipStream`类进行压缩。在压缩时,我们创建一个输出流`outputStream`,然后将其传递给`GZipStream`类的构造函数。在调用`Write`方法时,`GZipStream`类将压缩数据写入输出流中。最后,我们将输出流转换为字节数组,并将其存储在`compressedBytes`变量中。 接下来,我们使用`MySqlConnection`类连接MySQL数据库,并将压缩后的数据存入`data`表中的`data`字段中。在存储时,我们使用参数化查询并将`compressedBytes`变量传递给参数`@data`。 值得注意的是,MySQL中的`BLOB`类型支持存储二进制数据,因此我们可以将压缩后的字节数组直接存入数据库中。在读取数据时,我们可以将其转换为字节数组,然后使用`GZipStream`类进行解压缩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值