Я переключаюсь с классического 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;
Есть ли способ передать параметры без необходимости указывать имена параметров и просто использовать вопросительные знаки и порядок, в котором они появляются, чтобы указать, какой параметр куда идет?