Вставьте двоичные данные в SQL от c# без хранимой процедуры

Кто-либо знает ли если ее возможное вставлять двоичные данные в поле SQL от c#, не используя хранимую процедуру?

Например - преобразовывают массив байтов в base64 или что-то как этот и затем используют текстовую команду как следующее...

String.Format("update A set B = {0} where C = D", Convert.ToBase64String(b));

где b является массивом байтов.

Спасибо

5
задан Grant 23 December 2009 в 23:51
поделиться

3 ответа

Конечно, вы должны использовать параметризованные операторы, но если вам действительно нужно, вы можете сделать это следующим образом:

byte[] b = null; //(your input should be a byte[])
String.Format("update A set B = 0x{0} where C = D", BitConverter.ToString(b).Replace("-", "").ToLower());

SQL Server ожидает двоичные данные в шестнадцатеричном формате без дефисов и в нижнем регистр с префиксом « 0x »

6
ответ дан 18 December 2019 в 13:15
поделиться

Попробуйте использовать этот код: либо команда. Параметры без комментариев, либо код с комментариями должны работать. Я использую OracleDataClient на работе, поэтому я почти полностью взял этот код из MSDN

string commandText= "update A set B = @BIN where C = D";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(commandText, connection);
    command.Parameters.Add("@BIN", SqlDbType.Binary, b.Length).Value = b;    
    // command.Parameters.AddWithValue("@BIN ", b);

    try
    {
        connection.Open();
        Int32 rowsAffected = command.ExecuteNonQuery();
        Console.WriteLine("RowsAffected: {0}", rowsAffected);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

edit: предполагается, что b уже является байтовым []. Я просто посмотрел на старый код и обновил параметр до того, что у меня сработало (SQL Server 2005)

5
ответ дан 18 December 2019 в 13:15
поделиться

Да, я думаю, вы можете сделать это с помощью параметризованных запросов.

Пример найден здесь: http://www.akadia.com/services/dotnet_read_write_blob.html

3
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: