我正在從傳統的ASP切換到ASP.NET。我在做一些基本的東西時遇到了一些麻煩,我曾經很容易用舊的方法做。下面是我用來用幾行執行標量查詢的方便的ASP函數。SQL參數和問號
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;
是否有辦法傳遞參數而不必設置參數名稱,並簡單地使用問號和它們出現的順序來指定哪個參數在哪裏?
我相信ADO.Net只支持命名參數。對不起:) – dana 2012-02-04 14:49:06
+1爲'下一個'ParamCount' - 我以爲我是唯一一個這樣做的瘋子! ; o) – Paul 2014-10-15 08:39:17