Как вставить массив байтов в blob-ячейку в базе данных? - PullRequest
0 голосов
/ 12 июля 2020

Я использую этот код для редактирования данных в базе данных. Когда такие данные, как int или string, все работает, но я не могу понять, как вставить массив байтов в ячейку с типом данных BLOB. 3 дня уже штурмом гугл, ютуб, но решения не могу найти.

OdbcTransaction transaction = null;
                OdbcCommand command = new OdbcCommand();

                transaction = connection.BeginTransaction();

                command.Connection = connection;
                command.Transaction = transaction;
                
                
                command.CommandText = "UPDATE tb_vs SET te_file=" + bytes + " WHERE te_comp LIKE '" + ParStr + "'";
                //command = new OdbcCommand("UPDATE tb_vs SET te_file=" + bytes + " WHERE te_comp LIKE '" + ParStr + "'", connection);
                //command.Parameters.Add("@byte", OdbcType.Blob).Value = bytes;
                

                command.ExecuteReader();
                transaction.Commit();

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Этот код подсказал мне

using (var transaction = connection.BeginTransaction())
using (var command = new OdbcCommand())

command.Connection = connection;
command.Transaction = transaction;

command.CommandText =
    "UPDATE tb_vs SET te_file = ? WHERE te_comp LIKE ?";

command.Parameters.Add("@p1", OdbcType.Binary).Value = bytes;
command.Parameters.Add("@p2", OdbcType.NVarChar).Value = ParStr;

int rowsAffected = command.ExecuteNonQuery();
transaction.Commit();

, но он дает новую ошибку:

System.Data.Odb c .OdbcException: "ERROR [HY000] [Microsoft] [ODB C Драйвер TransBase] [TransBase] Общая ошибка. TransBase Exe c отчет об ошибке: тип параметра 0 не совпадает (получен binchar (*), требуется blob)

0 голосов
/ 12 июля 2020

Вам нужно преобразовать массив в строку. Потому что Oracle не распознает C# массивы

...