C# 无法写入从表中选择的文本文件的内容
我从表中获取一个样本以获取测试文件,该文件以BLOB数据类型写入表中,并将该文件写入PC,但它从表中写入其名称,而不是文件的原始内容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
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字节,这是文件大小