10bet网址
MySQL连接器/NET开发指南
相关的文档10bet官方网站 下载本手册

5.6.3从数据库读取BLOB到磁盘的文件

文件加载到文件表,我们可以使用MySqlDataReader类来检索它。

对象中检索一行文件表,然后将数据加载到文件流写入磁盘的对象:

c#代码示例

MySql.Data.MySqlClient.MySqlConnection康涅狄格州;MySql.Data.MySqlClient.MySqlCommand cmd;MySql.Data.MySqlClient.MySqlDataReader myData;conn = new MySql.Data.MySqlClient.MySqlConnection();cmd = new MySql.Data.MySqlClient.MySqlCommand();SQL字符串;UInt32文件大小;byte [] rawData;文件流fs;conn.ConnectionString = "server=127.0.0.1;uid=root;" + "pwd=12345;database=test"; SQL = "SELECT file_name, file_size, file FROM file"; 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("file_size")); rawData = new byte[FileSize]; myData.GetBytes(myData.GetOrdinal("file"), 0, rawData, 0, (int)FileSize); fs = new FileStream(@"C:\newfile.png", 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); }

Visual Basic代码示例

Dim conn As New MySqlConnection Dim cmd As New MySqlCommand Dim myData As MySqlDataReader Dim SQL As String Dim rawData() As Byte Dim FileSize As UInt32 Dim fs As FileStream conn. connectionstring = "server=127.0.0.1;"_ & "uid=root;"_ & "pwd=12345;"_ & "database=test" SQL = "SELECT file_name, file_size, file FROM file"试试conn.Open() cmd。Connection = conn cmd。CommandText = SQL myData = cmd。executerreader如果不是myData。HasRows然后抛出新异常("There are no blob to save") myData.Read() FileSize = myData.GetUInt32(myData.GetOrdinal("file_size")) rawData = New Byte(FileSize) {} myData.GetBytes(myData.GetOrdinal("file"), 0, rawData, 0, FileSize) fs = New FileStream("C:\newfile.png", FileMode. png")OpenOrCreate, FileAccess.Write) fs。写入(rawData, 0, FileSize) fs.Close() MessageBox。显示("文件成功写入磁盘!","成功!",MessageBoxButtons. "myData.Close() conn.Close()捕捉ex作为异常MessageBox。Show("There was an error: " & ex.Message, " error ", MessageBoxButtons. "OK, MessageBoxIcon.Error)结束尝试

连接后的内容文件表都装入了MySqlDataReader对象。的GetBytes方法MySqlDataReader用于加载写入字节数组,然后使用文件流对象。

GetOrdinalMySqlDataReader方法可以用来确定命名列的整数索引。类的列顺序不正确时,使用GetOrdinal方法可防止出现错误选择查询被修改。