C#实现MySQL数据库中的blob数据存储_MySQL
在MySQL数据库中,有一种blob数据类型,用来存储文件。C#编程语言操作MySQL数据库需要使用MySQL官方组件MySQL.Data.dll。
Mysql.Data.dll(6.9.6)组件下载地址:http://download.csdn.net/detail/keypig_zz/9262767。
现在说一说如何实现blob类型数据的操作。
新建winform程序,添加两个按钮。代码如下:
1 System.IO.MemoryStream ms = new System.IO.MemoryStream(); 2 private void button1_Click(object sender, EventArgs e) 3 { 4 //测试序列化与反序列化 5 int[] arr = { 1, 2, 3 }; 6 BinaryFormatter bFormatter = new BinaryFormatter(); 7 bFormatter.Serialize(ms, arr); 8 byte[] byteArr = ms.ToArray(); 9 MessageBox.Show(byteArr.Length.ToString()); 10 MySqlConnection conn = new MySqlConnection(Properties.Settings.Default.MySqlConnectString); 11 //string insertStr = "update mm set aa=4,arr=@blobData where aa=4;"; 12 string insertStr = "insert into mm(arr) values(@blobData);";//需要主键设置自增 13 MySqlParameter par=new MySqlParameter("@blobData",MySqlDbType.Blob); 14 par.Value=byteArr; 15 MySqlCommand cmd = new MySqlCommand(insertStr, conn); 16 cmd.Parameters.Add(par); 17 try 18 { 19 conn.Open(); 20 cmd.ExecuteNonQuery(); 21 ms.Close(); 22 ms.Dispose(); 23 } 24 catch (Exception ep) 25 { 26 MessageBox.Show(ep.Message); 27 } 28 29 30 } 31 32 private void button2_Click(object sender, EventArgs e) 33 { 34 BinaryFormatter bFormatter = new BinaryFormatter(); 35 36 MySql.Data.MySqlClient.MySqlDataReader myData; 37 MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection(Properties.Settings.Default.MySqlConnectString); 38 string readStr = "select arr from mm where id =6;"; 39 MySqlCommand cmd = new MySqlCommand(readStr, conn); 40 try 41 { 42 conn.Open(); 43 myData = cmd.ExecuteReader(); 44 if (!myData.HasRows) 45 { 46 throw new Exception("没有blob数据"); 47 } 48 myData.Read(); 49 byte[] blob = new byte[myData.GetBytes(0, 0, null, 0, int.MaxValue)]; 50 myData.GetBytes(0, 0, blob, 0, blob.Length); 51 myData.Close(); 52 ms = new System.IO.MemoryStream(blob); 53 ms.Position = 0; 54 int[] arr = (int[])bFormatter.Deserialize(ms); 55 ms.Dispose(); 56 string arrStr = null; 57 for (int i = 0; i < arr.GetLength(0); i++) 58 { 59 arrStr += arr[i].ToString()+" "; 60 } 61 MessageBox.Show(arrStr); 62 } 63 catch(Exception ep) 64 { 65 MessageBox.Show(ep.Message); 66 } 67 68 }
代码中的连接字符串存储于Settings中,具体格式为:“server=127.0.0.1;user=root;database=***;port=3306;password=***;”。数据库中存在叫做mm的一个表格,含有一个id字段(主键,自增),一个arr字段(blob类型)。
上述代码将一个整型数组{1,2,3}序列化之后以blob数据类型存储在MySQL数据库中,进一步,又从MySQL数据库中读取blob数据,进行反序列化,得到整型数组{1,2,3}。代码执行结果如下:

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。
