C#ODBC获取tinyblob和blob作为字节数组

时间:2014-05-08 14:58:29

标签: c# arrays odbc byte blob

我有以下问题。 我有一个有26列的表。有些列是tinyblob或blob列。存储在这些blob列中的数据采用以下格式:

0000 0010 0005 0400 0365 0000 0020 0041 0251 0023

我使用以下代码获取我的选择行:

            try

             {

                 string[] CurrentCons;
                 mysql.command = new OdbcCommand("SELECT * FROM current.cons_list WHERE name = ?", mysql.connection);
                 mysql.command.Parameters.Add("name", OdbcType.VarChar).Value = nick;
                 mysql.myReader = mysql.command.ExecuteReader();
                 CurrentCons = new string[mysql.myReader.FieldCount];
                 mysql.myReader.Read();

                 for (int i = 0; i < CurrentCons.Length; i++)
                 {
                     CurrentCons[i] = mysql.myReader[i].ToString();
                 }
                 return CurrentCons;
             }
             catch(Exception ex)
             {
                 string[] CurrentCons;
                 LOG.WriteLog("(" + DateTime.Now + ")\t" + ex.Message + "\t" + ex.Source + "\t" + ex.InnerException + "\n");
                 CurrentCons = new string[0];
                 return CurrentCons;
             }

我想要做的是将tinyblob作为字节数组并将其称为一个,例如

byte[] MyBLOB = functions.GetData("John213");
MessageBox.Show(string.format("{0}", MyBLOB[0])); //0
MessageBox.Show(string.format("{0}", MyBLOB[2])); //5
MessageBox.Show(string.format("{0}", MyBLOB[4])); //869

这可能吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

将blob读入字节数组的方法是通过GetBytes()方法

int length; //the width of the blob
byte[] buffer = new byte[length];
reader.GetBytes(reader.GetOrdinal("John123"), 0, buffer, 0, length);

MSDN Documentation for the method

仅供参考,GetBytes()可用于C#中的大多数DataReader类。