C# 无法写入从表中选择的文本文件的内容

C# 无法写入从表中选择的文本文件的内容,c#,mysql,C#,Mysql,我从表中获取一个样本以获取测试文件,该文件以BLOB数据类型写入表中,并将该文件写入PC,但它从表中写入其名称,而不是文件的原始内容 MySql.Data.MySqlClient.MySqlConnection conn; MySql.Data.MySqlClient.MySqlCommand cmd; MySql.Data.MySqlClient.MySqlDataReader myData; conn = new MySql.Data.MySqlClient.MySqlConnection

我从表中获取一个样本以获取测试文件,该文件以BLOB数据类型写入表中,并将该文件写入PC,但它从表中写入其名称,而不是文件的原始内容

MySql.Data.MySqlClient.MySqlConnection conn;
MySql.Data.MySqlClient.MySqlCommand cmd;
MySql.Data.MySqlClient.MySqlDataReader myData;

conn = new MySql.Data.MySqlClient.MySqlConnection();
cmd = new MySql.Data.MySqlClient.MySqlCommand();

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

conn.ConnectionString = "server=localhost;uid=root;" +
    "pwd=1111;database=test";

SQL = "SELECT fileName, fileSize, fileBlob FROM file WHERE id=5";

try
{
    conn.Open();

    cmd.Connection = conn;
    cmd.CommandText = SQL;

    myData = cmd.ExecuteReader();

    if (!myData.HasRows)
        throw new Exception("There are no BLOBs to save");

    myData.Read();

    FileSize = myData.GetUInt32(myData.GetOrdinal("fileSize"));
    rawData = new byte[FileSize];

    myData.GetBytes(myData.GetOrdinal("fileBlob"), 0, rawData, 0, (int)FileSize);

    fs = new FileStream(@"C:\newfile.txt", FileMode.OpenOrCreate, FileAccess.Write);
    fs.Write(rawData, 0, (int)FileSize);
    fs.Close();

    MessageBox.Show("File successfully written to disk!",
        "Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

    myData.Close();
    conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
    MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message,
        "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

我真的觉得文件名被写入blob列,而不是文件内容。如果您在workbench(或其他)中运行此查询,那么
fileBlob
的长度是多少?加载到表中的原始文件的大小是713bytest,这不是我要问的。数据库中[fileBlob]列中的数据大小是多少?它是否与转换为字节的文件名大小相同?您的代码应该可以工作,我认为您的问题是上游。fileSize=713字节,这是文件大小