Tôi đang chuyển đổi từ ASP cổ điển sang ASP.NET. Và tôi đang gặp một số rắc rối khi thực hiện một số công cụ cơ bản mà tôi đã từng làm một cách dễ dàng với phương pháp cũ. Dưới đây là một hàm ASP tiện dụng mà tôi đã sử dụng để thực hiện các truy vấn vô hướng với một vài dòng.Tham số SQL và Dấu hỏi
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
tôi sử dụng để vượt qua một truy vấn SQL với dấu hỏi như giữ chỗ cho các thông số như thế này:
SELECT TOP 1 UserName FROM Members WHERE (Created>?) AND (AdminLevel=?);
Sau đó tôi sẽ thiết lập một mảng các tham số và vượt qua nó vào chức năng:
MyArray = ARRAY("1-JAN-2012",1)
Các tham số trong mảng sẽ thay thế dấu chấm hỏi trong chuỗi truy vấn theo thứ tự chúng xuất hiện.
Tôi đang cố gắng bắt chước chức năng này trong C# nhưng tôi bị kẹt trong phần mà tôi phải chuyển các tham số. Cho đến nay tôi đã đến điểm mà tôi phải sử dụng giữ chỗ tên như @Created và @AdminLevel thay cho dấu hỏi và sau đó tôi phải thiết lập đối tượng tham số như thế này:
SqlParameter param = new SqlParameter();
param.ParameterName = "@AdminLevel";
param.Value = 1;
Có cách nào để chuyển các tham số mà không cần phải đặt tên tham số và chỉ cần sử dụng dấu hỏi và thứ tự mà chúng xuất hiện để chỉ định tham số đi đâu?
Tôi tin rằng ADO.Net chỉ hỗ trợ các tham số có tên. Xin lỗi :) – dana
+1 cho 'Tiếp theo' ParamCount' - Tôi nghĩ tôi là người điên duy nhất đã làm điều đó! ; o) – Paul