我有以下问题。 我有一个有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
这可能吗?提前谢谢。
答案 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类。