程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> C#實現MySQL數據庫中的blob數據存儲,

C#實現MySQL數據庫中的blob數據存儲,

編輯:MySQL綜合教程

C#實現MySQL數據庫中的blob數據存儲,


    在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}。代碼執行結果如下:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved