2015-11-23 3 views
0

Я получаю данные из базы данных и из локального файла XML. Я использую MySqlReader для получения данных из базы данных по запросу запроса, и я использую объект DataTableReader для получения данных из XML.Как передать объект DataTableReader в массив байтов?

MySqlReader может использовать байтовый массив, но DataTableReader не может использовать массив байтов.

//following block is working fine 
MySqlDataReader mySqlReader = new MySqlDataReader(); 
mySqlReader = it will get data from database by select query 

Employee employee = new Employee(); 
employee.Image = DevExpress.XtraEditors.Controls.ByteImageConverter.FromByteArray((byte[])mySqlReader["profilePic"]); 

//following block is not working. Error : "unable to cast object of type 'System.String' to type 'System.Bytes[]'" 
DataTable dtEmployee = new DataTable(); 
dtEmployee = dataset.Tables[0]; 
DataTableReader dtReader = dtEmployee.CreateDataReader(); 

Employee employee = new Employee(); 
//error throws here 
employee.Image = DevExpress.XtraEditors.Controls.ByteImageConverter.FromByteArray((byte[])dtReader["profilePic"]); 

Может кто-нибудь предложить, как решить эту проблему?

ответ

0

Ваша таблица MySQL, вероятно, имеет тип BLOB для «ProfilePic» и, таким образом, ее можно передать в массив байтов, но как бинарные данные хранятся в XML? ваша ошибка предположить, что она хранится в виде строки, вероятно, в Base64 так попробуйте использовать Convert.FromBase64String

employee.Image = DevExpress.XtraEditors.Controls.ByteImageConverter.FromByteArray((byte[])Convert.FromBase64String(dtReader["profilePic"])); 

если ваш двоичные данные хранятся в другом формате, вам необходим другой конвертер ...