Как я могу решить "Не удалось преобразовать 'system.data.datacolumn' в 'byte []'"? - PullRequest
0 голосов
/ 30 октября 2019

Поэтому я пытаюсь показать изображение с моего SQL-сервера в PictureBox, но когда я пытаюсь преобразовать system.data.datacolumn в байт [], я получаю следующую ошибку: «Не удается преобразовать» system.data. столбец данных 'to' byte [] '". Я 2 часа искал способ ее решения, но ничего не нашел, надеюсь, вы мне поможете:).

В моем коде много разных классов, поэтому я попытаюсь объяснить это какхорошо, насколько это возможно.

// you have the "herramientas" method bellow, is where I make the connection.
DataSet dataSet = Biblioteca.Herramientas(string.Format("SELECT * FROM Producto"));


//The next two lines select one row from the table "Image" where the image is stored
int id_image = Convert.ToInt16(dataSet.Tables[0].Rows[contador]["id_Image"]);
DataSet dataset_Image = Biblioteca.Herramientas(string.Format("SELECT * FROM Image WHERE id_Image = "+ id_image));

//**here I have the problem**
byte[] array = (byte[])dataset_Image.Tables[0].Columns["image"];

// It let me convert it to string
dataset_Image.Tables[0].columns["image"].tostring();

Это метод, в котором я устанавливаю соединение, он не очень актуален, но, может быть, он вам полезен

public static DataSet Herramientas (string cdm)
{
    SqlConnection connection = new SqlConnection("Data Source=.;Initial Catalog=PracticaSQL;Integrated Security=True");
    DataSet dataSet = new DataSet();
    SqlDataAdapter adapter = new SqlDataAdapter(cdm, connection);
    adapter.Fill(dataSet);
    connection.Close();
    return dataSet;
}

И, наконец, так я добавляю картинки в свойтаблица в sql

--the "image" column in the table "Image" is not an image datatype, but varbinary(MAX)
insert into Image select * from openrowset (bulk 'here goes the image directory', single_blob) as image

И это весь код, я надеюсь, что решение не слишком сложно, и если вам нужно что-то еще, просто спросите его. Спасибо всем за потраченное время, надеюсь, вам удачного дня: D.

1 Ответ

0 голосов
/ 01 ноября 2019

byte [] array = dataset_Image.Tables [0] .Rows [0]. Field (0);0 в конце означает столбец, за которым вы идете (решение, предлагаемое @ Çöđěxěŕ).

...