Я делаю переход с классического ASP на ASP.NET.И у меня возникли проблемы с выполнением некоторых базовых вещей, которые я легко делал со старым методом.Ниже приведена удобная функция ASP, которую я использовал для выполнения скалярных запросов с несколькими строками.
FUNCTION ExecuteScalarParams(SQLQuery, Parameter_Array)
Set cmd1 = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = con
cmd1.CommandText = SQLQuery
cmd1.CommandType = 1
FOR ParamCount = 0 TO UBOUND(Parameter_Array)
cmd1.Parameters(ParamCount) = Parameter_Array(ParamCount)
NEXT 'ParamCount
Set rstScalar = cmd1.Execute()
IF NOT rstScalar.EOF THEN
arrScalar = rstScalar.GetRows()
IF UBOUND(arrScalar,2) = 0 THEN
ExecuteScalarParams = arrScalar(0,0)
ELSE
ExecuteScalarParams = NULL
END IF
ELSE
ExecuteScalarParams = NULL
END IF
rstScalar.Close
Set rstScalar = Nothing
Set cmd1 = Nothing
END FUNCTION
Я использовал для передачи запроса SQL с вопросительными знаками в качестве заполнителей для таких параметров:
SELECT TOP 1 UserName FROM Members WHERE (Created>?) AND (AdminLevel=?);
Затем я настроил бы массив параметров и передал бы его функции:
MyArray = ARRAY("1-JAN-2012",1)
Параметры в массиве заменили бы знаки вопроса в строке запроса в порядке их появления.
Я пытаюсь имитировать эту функцию в C #, но я застрял в той части, где я должен передать параметры.До сих пор я дошел до того, что мне пришлось использовать именованные заполнители, такие как @Created и @AdminLevel вместо вопросительных знаков, а затем я должен настроить объекты параметров следующим образом:
SqlParameter param = new SqlParameter();
param.ParameterName = "@AdminLevel";
param.Value = 1;
способ передачи параметров без необходимости устанавливать имена параметров и просто использовать вопросительные знаки и порядок, в котором они отображаются, чтобы указать, какой параметр идет куда?