ALTER PROCEDURE SetMyName
(
@myName varbinary(20)
)
AS
UPDATE MyNameTable .....
From Byte() to Byte
В Dim myName As Byte
?
Цитата: alexburzak
Как конвертировать из Dim myName As Byte()
В Dim myName As Byte
?
В Dim myName As Byte
?
Никак. Массив скастовать байтом нельзя.
Правда, можно получить укзатель на первый элемент массива, но это уже unsafe код.
Написал и сам понял, что сморозил глупость :-)
На самом деле я не правильно поставил вопрос.
Новый вариант:
-------------------------
Есть поле в базе данных(mssql) - Varbinary 20
Есть переменная Dim myName As Byte()
Что мне нужно что бы засунуть эту переменную в базу данных?
Какой тип конвертации?
Цитата: alexburzak
Что мне нужно что бы засунуть эту переменную в базу данных?
Вы видимо создаете DbCommand или SqlCommand.
Допустим на сервере уже есть хранимая процедура
Код:
Код:
byte[] myName = new byte[] { 1, 2, 3, 4 };
// создание команды
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SetMyName";
// создание параметра
SqlParameter param_myName = new SqlParameter();
param_myName.Name = "@myName"
param_myName.DbType = SqlDbType.VarBinary;
param_myName.Size = 20;
param_myName.Value = myName;
cmd.Parameters.Add(param);
// создание команды
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SetMyName";
// создание параметра
SqlParameter param_myName = new SqlParameter();
param_myName.Name = "@myName"
param_myName.DbType = SqlDbType.VarBinary;
param_myName.Size = 20;
param_myName.Value = myName;
cmd.Parameters.Add(param);
Нужно учитывать, что ADO.NET умеет работать с байт-массивами размером до 8000.
Но в моем случаи не подходит, так как используется не процедура на стороне сервера, а sql – стринг на стороне пользователя(досталась в наследство).
Вообщем сделал так все перегнал в стринг (универсальный формат) в базу данных а когда достаю, переганяю обратно в байты… Изврат конечно, но лишний раз показывает что проще писать процедуры на стороне сервера.
Еще раз тзенкс.
:-)
Цитата: alexburzak
Вообщем сделал так все перегнал в стринг (универсальный формат) в базу данных а когда достаю, переганяю обратно в байты…
:-)
Тоже не проблема.
Создаем параметрический запрос и пихаем его в cmd.CommandText:
Код:
INSERT INTO myName_Table (myName)
VALUES @myName
VALUES @myName
Тип команды ставим CommandType.Text.
Параметр команды остается прежним.
Понял, спасибо. Как всегда если знаешь как то не проблемма... :-)