3
我在MYSQL服務器中有一個數據庫。有一個表格存儲圖片及其信息。該圖像的數據類型是Mediumblob。我需要閱讀並存儲在一個字節[]中,但我不知道該怎麼做。任何人都可以爲這種情況提供解決方案? Tks這麼多:)從C#中的MYSQL讀取Mediumblob數據類型
問候。
我在MYSQL服務器中有一個數據庫。有一個表格存儲圖片及其信息。該圖像的數據類型是Mediumblob。我需要閱讀並存儲在一個字節[]中,但我不知道該怎麼做。任何人都可以爲這種情況提供解決方案? Tks這麼多:)從C#中的MYSQL讀取Mediumblob數據類型
問候。
望着從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」列名嗎?所以如果我需要將圖像存儲在一個字節[]中,所以我只需要使用這些代碼? int FileSize = myData.GetUInt32(myData.GetOrdinal(「file_size」)); byte [] rawData = new byte [FileSize]; –
是的,'file_size'是一個列名。您將不得不將數據大小與數據本身一起存儲......我將編輯存儲案例的答案。 –