Не знаю, почему вы хотите сохранить целое число в столбце varbinary, но вы можете использовать BitConverter
вместе с параметризованным запросом. Всегда используйте параметры вместо конкатенации строк для значений, которые варьируются в зависимости от исполнения, поскольку параметры имеют ряд преимуществ для безопасности, производительности и простоты использования.
Dim varbin As Byte() = BitConverter.GetBytes(houseid)
obj = objCon.CreateCommand()
strSQL = "insert into " & tbl & " (hello, HOUSE_ID, world) VALUES (@hello, @varbin, @world);"
obj.Parameters.Add("@hello", SqlDbType.VarChar, 50).Value = hello
obj.Parameters.Add("@varbin", SqlDbType.VarBinary, 50).Value = varbin
obj.Parameters.Add("@world", SqlDbType.VarChar, 50).Value = world
obj.CommandText = strSQL
obj.ExecuteNonQuery()
Нет, нет никакой потребности в этом, потому что проблема это старается избегать - а именно, опечатка:
if (variable = 0)
не скомпилировал бы в C# так или иначе. Условия в if
операторы должны быть булевской переменной. Существует все еще риск создания одной из этих ошибок:
if (something = true)
if (something = false)
если something
Логическая переменная, но лучший способ зафиксировать это состоит в том, чтобы избежать константы:
if (something)
if (!something)
Если у Вас есть разработчики, приносящие по идиомам как это с других языков, не думая о том, являются ли они соответствующими в C#, необходимо бдительно следить для них делающий больше того же. При попытке записать C#, как будто это - C++ (или любой другой язык, в значительной степени - за возможным исключением из VB.NET) Вы закончите тем, что писали неидиоматический код C#.
Править: Как cletus отмеченный, существует другая потенциальная область для беспокойства:
bool a = false, b = true;
if (a = b) { } // No warnings
Таким образом, ошибка может все еще произойти - но затем мы вне области сравнения с константой так или иначе :) Я сказал бы, что это неожиданно возникает невероятно редко и не стоит потраченное волнение слишком большого количества времени по поводу этого.
Нет никакой потребности в этом синтаксисе в современном мире. Это - привычка, в которую вошли многие из нас, когда наш компилятор C не предупредит нас, что мы собирались запустить ракеты.
if(status = RED_ALERT)
{
launchMissiles();
}
Я подозреваю, что это - оставшаяся привычка. В C:
if (0 = variable)
бросит ошибку компилятора тогда как
if (variable = 0)
не будет.
Это не нужно для C#. Но Это - все еще хорошая идея.
Программирование - все о привычке, и Вы никогда не знаете, когда Вы будете писать некоторый JavaScript, или обновить старую программу Вы думали, был давно в прошлом.