【问题标题】:Read Mediumblob data type from MYSQL in C#在 C# 中从 MYSQL 读取 Mediumblob 数据类型
【发布时间】:2012-10-24 18:41:16
【问题描述】:

我在 MYSQL Server 中有一个数据库。有一个表存储一个带有其信息的图像。该图像的数据类型是 Mediumblob。我需要阅读它并存储在一个字节 [] 中,但我不知道该怎么做。有人有这种情况的解决方案吗?太感谢了:)

问候。

【问题讨论】:

    标签: c# mysql byte


    【解决方案1】:

    看看this article on MySQL website的例子,你应该可以像这样处理数据:

    要存储图像:

    MySql.Data.MySqlClient.MySqlConnection conn;
    MySql.Data.MySqlClient.MySqlCommand cmd;
    
    // initialize "conn" and "cmd" here
    
    FileStream fs = new FileStream(@"c:\image.png", FileMode.Open, FileAccess.Read);
    FileSize = fs.Length;
    
    byte[] rawData = new byte[FileSize];
    fs.Read(rawData, 0, FileSize);
    fs.Close();
    
    conn.Open();
    
    string SQL = "INSERT INTO file VALUES(NULL, @FileSize, @File)";
    
    cmd.Connection = conn;
    cmd.CommandText = SQL;
    cmd.Parameters.AddWithValue("@FileSize", FileSize);
    cmd.Parameters.AddWithValue("@File", rawData);
    
    cmd.ExecuteNonQuery();
    
    conn.Close();
    

    然后阅读:

    MySql.Data.MySqlClient.MySqlConnection conn;
    MySql.Data.MySqlClient.MySqlCommand cmd;
    MySql.Data.MySqlClient.MySqlDataReader myData;
    
    // initialize connection and query here...
    
    myData = cmd.ExecuteReader();
    
    if (!myData.HasRows)
        throw new Exception("There are no BLOBs to save");
    
    myData.Read();
    
    int FileSize = myData.GetUInt32(myData.GetOrdinal("file_size"));
    byte[] rawData = new byte[FileSize];
    
    myData.GetBytes(myData.GetOrdinal("file"), 0, rawData, 0, (int)FileSize);
    
    FileStream fs = new FileStream(@"C:\newfile.png", FileMode.OpenOrCreate, FileAccess.Write);
    fs.Write(rawData, 0, (int)FileSize);
    fs.Close();
    

    此代码显示了如何将图像保存到文件中(并假设它以 PNG 格式存储)但是您可以对数据执行任何操作...

    【讨论】:

    • 是“file_size”列名????因此,如果我需要将图像存储在 byte[] 中,那么我只需要使用这些代码? int FileSize = myData.GetUInt32(myData.GetOrdinal("file_size")); byte[] rawData = new byte[FileSize];
    • 没错,file_size 是一个列名。您必须将数据大小与数据本身一起存储......我将编辑存储案例的答案。
    猜你喜欢
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2012-09-06
    相关资源
    最近更新 更多