C#利用MySQL的BLOB存储和读取文件和对象

本文介绍了如何在MySQL数据库中使用BLOB类型存储和读取文件及对象,详细阐述了四种BLOB类型的容量限制,并展示了在WPF应用程序中实现文件存取和对象序列化的步骤。
摘要由CSDN通过智能技术生成

BLOB类型

在MySQL中,BLOB类型的字段用于存储二进制数据

BLOB类型分为四类(单位:字节)

  • TinyBlob 最大 255
  • Blob 最大 65K
  • MediumBlob 最大 16M
  • LongBlob 最大 4G

WPF实现

在WPF的窗口新建四个按钮,功能如图所示:
这里写图片描述

存文件到数据库

private void Button_Click(object sender, RoutedEventArgs e)
        {       
            MySqlConnection conn;
            MySqlCommand cmd;

            conn = new MySqlConnection();
            cmd = new MySqlCommand();

            string SQL;
            long FileSize;
            byte[] rawData;
            FileStream fs;

            conn.ConnectionString = "SERVER=120.95.132.137;DATABASE=cad_project;UID=root;PASSWORD=;charset=utf8;";

            try
            {
                fs = new FileStream(@"f:\test1.txt", FileMode.Open, FileAccess.Read);
                FileSize = fs.Length;

                rawData = new byte[FileSize];
                fs.Read(rawData, 0, (int)FileSize);
                fs.Close();

                conn.Open();

                SQL = "INSERT INTO serialization VALUES(NULL, @FileName, @FileSize, @File)";

                cmd.Connection = conn;
                cmd.CommandText = SQL;
                cmd.Parameters.AddWithValue("@FileName", "test1");
                cmd.Parameters.AddWithValue("@FileSize", FileSize);
                cmd.Parameters.AddWithValue("@File", rawData);

                cmd.ExecuteNonQuery();

                MessageBox.Show("File Inserted into database successfully!",
                    "Succ
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
读取数据库中的 blob 字段,可以把它转换成二进制数组,然后使用一些开源库来判断文件类型。 在 Java 中,可以使用 Apache Tika 来判断文件类型。具体步骤如下: 1. 读取数据库中的 blob 字段,转换成二进制数组。 2. 创建一个 Tika 对象,用于判断文件类型。 3. 调用 Tika 对象的 `detect` 方法,传入二进制数组,获取文件类型。 示例代码如下: ```java import org.apache.tika.detect.Detector; import org.apache.tika.detect.MagicDetector; import org.apache.tika.metadata.Metadata; import org.apache.tika.mime.MediaType; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.sax.BodyContentHandler; import java.io.ByteArrayInputStream; import java.io.InputStream; // 读取数据库中的二进制数组 byte[] blobData = getBlobDataFromDatabase(); // 创建 Tika 对象 Detector detector = new MagicDetector(); Parser parser = new AutoDetectParser(detector); BodyContentHandler handler = new BodyContentHandler(); Metadata metadata = new Metadata(); ParseContext context = new ParseContext(); // 将二进制数组转换成 InputStream InputStream stream = new ByteArrayInputStream(blobData); // 调用 Tika 的 detect 方法获取文件类型 MediaType mediaType = detector.detect(stream, metadata); // 输出文件类型 System.out.println("File type: " + mediaType.toString()); ``` 这样就可以判断 blob 对象的文件类型了。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值