Вы можете попробовать функцию get-wmiCustom, размещенную здесь здесь . Было бы неплохо, если бы у get-wmiObject был параметр тайм-аута? Возьмем эту вещь .
Использовать параметризованный SQL.
Примеры
(Эти примеры приведены в C #, см. ниже для версии VB.NET.)
Замените свои конкатенации строк на @...
заполнители, а затем добавьте значения в свой SqlCommand. Вы можете свободно выбирать имя заполнителей, просто убедитесь, что они начинаются с знака @
. Ваш пример будет выглядеть так:
var sql = "INSERT INTO myTable (myField1, myField2) " +
"VALUES (@someValue, @someOtherValue);";
using (var cmd = new SqlCommand(sql, myDbConnection))
{
cmd.Parameters.AddWithValue("@someValue", someVariable);
cmd.Parameters.AddWithValue("@someOtherValue", someTextBox.Text);
cmd.ExecuteNonQuery();
}
Тот же шаблон используется для других видов операторов SQL:
var sql = "UPDATE myTable SET myField1 = @newValue WHERE myField2 = @someValue;";
// see above, same as INSERT
или
var sql = "SELECT myField1, myField2 FROM myTable WHERE myField3 = @someValue;";
using (var cmd = new SqlCommand(sql, myDbConnection))
{
cmd.Parameters.AddWithValue("@someValue", someVariable);
using (var reader = cmd.ExecuteReader())
{
...
}
// Alternatively: object result = cmd.ExecuteScalar();
// if you are only interested in one value of one row.
}
Предупреждение: AddWithValue
является хорошей отправной точкой и прекрасно работает в большинстве случаев. Однако, что значение, которое вы передаете, должно точно соответствовать типу данных соответствующего поля базы данных. В противном случае вы можете оказаться в ситуации, когда преобразование предотвращает ваш запрос из с помощью индекса . Обратите внимание, что некоторые типы данных SQL Server, такие как char / varchar (без предшествующих «n») или даты, не имеют соответствующего типа данных .NET. В этих случаях вместо следует использовать Add
с правильным типом данных.
Зачем мне это делать?
O'Brien
не будет разбивать ваше приложение только потому, что он настаивает на сохранении своего странного имени. Другие библиотеки доступа к базе данных
?
вместо @...
в качестве заполнителя в SQL. В этом случае первый параметр AddWithValue
не имеет значения; вместо этого вам нужно добавить параметры в правильном порядке. То же самое верно для OdbcCommand . Это пример кода для wiki answer в vb.net , если предположить, что Option Strict On
и Option Infer On
.
INSERT
Dim sql = "INSERT INTO myTable (myField1, myField2) " &
"VALUES (@someValue, @someOtherValue);"
Using cmd As New SqlCommand(sql, myDbConnection)
cmd.Parameters.AddWithValue("@someValue", someVariable)
cmd.Parameters.AddWithValue("@someOtherValue", someTextBox.Text)
cmd.ExecuteNonQuery()
End Using
UPDATE
Dim sql = "UPDATE myTable SET myField1 = @newValue WHERE myField2 = @someValue;"
' see above, same as INSERT
SELECT
Dim sql = "SELECT myField1, myField2 FROM myTable WHERE myField3 = @someValue;"
Using cmd As New SqlCommand(sql, myDbConnection)
cmd.Parameters.AddWithValue("@someValue", someVariable)
Using reader = cmd.ExecuteReader()
' ...
End Using
' Alternatively: Dim result = cmd.ExecuteScalar()
' if you are only interested in one value of one row.
End Using
cmd.ExecuteNonQuery()
– Hogan 2 February 2016 в 21:56