Ai đó có thể chỉ cho tôi cách đơn giản nhất để thực hiện truy vấn SQL parametrized bằng cách sử dụng ASP cổ điển trong VBScript?Làm thế nào để thực hiện một truy vấn SQL parametrized trên ASP cổ điển?
Ví dụ có thể kết hợp sẽ là tốt nhất.
Ai đó có thể chỉ cho tôi cách đơn giản nhất để thực hiện truy vấn SQL parametrized bằng cách sử dụng ASP cổ điển trong VBScript?Làm thế nào để thực hiện một truy vấn SQL parametrized trên ASP cổ điển?
Ví dụ có thể kết hợp sẽ là tốt nhất.
Sử dụng đối tượng adodb.command.
with createobject("adodb.command")
.activeConnection = application("connectionstring")
.commandText = "select * from sometable where id=?"
set rs = .execute(,array(123))
end with
Tôi cũng khuyên bạn nên sử dụng đối tượng truy cập db tùy chỉnh thay vì sử dụng trực tiếp adodb. Điều này cho phép bạn xây dựng một api đẹp hơn, cải thiện khả năng thử nghiệm và thêm các móc để gỡ lỗi/ghi nhật ký/lược tả. Thứ hai, bạn có thể thêm các giao dịch có phạm vi yêu cầu với các lỗi trên của rollback tiềm ẩn khi sử dụng sự kiện class_terminiate. đối tượng truy cập Oure db cung cấp các truy vấn api sau
call db.execute("update some_table set column=? where id=?", array(value, id))
set rs = db.fetch_rs("select * from some_table where id=?", array(id))
count = db.fetch_scalar("select count(*) from some_table where column > ?", array(value))
Làm cách nào để xử lý lỗi trong trường hợp này? – Geshan
vbscript rất thanh lịch và tối thiểu - Tôi thích nó! –
Điều này không hoạt động nếu cột là số và giá trị là rỗng. Có cách nào để làm việc này mà không cần sử dụng ADODB.Command.CreateParameter? –
Tôi giả sử bạn đang đề cập đến truy vấn SQL được tham số hóa. Nếu đây là trường hợp, sau đó mã VBScript sẽ giống như thế này:
Set adoCon = Server.CreateObject("ADODB.Connection")
adoCon.Open "connectionstring"
SET cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = adoCon
cmd.CommandType= adCmdStoredProc
cmd.CommandText = "GetCustomerByFirstName"
cmd.Parameters.Append cmd.CreateParameter("@FirstName",adVarchar,adParamInput,50,"John")
Set Rec = cmd.Execute()
While NOT Rec.EOF
'code to iterate through the recordset
Rec.MoveNext
End While
UPDATE: Bạn cần phải bao gồm các tập tin ADOVBS.inc cho hằng số để được công nhận.
Đây là liên kết: ADOVBS.inc
tôi có cần bao gồm một số tệp để ASP nhận ra các hằng số adVarchar và adParamInput không? –
Có. Đây là một liên kết đến tập tin đó http://www.asp101.com/articles/john/adovbs/adovbs.inc.txt –
suggesstion này rất hữu ích trong kịch bản thủ tục lưu trữ – Thanigainathan
Một lựa chọn khác để bao gồm adovbs.inc
là thêm một tham chiếu đến thư viện kiểu sau gần phía trên cùng của ASP của bạn. Giả sử điều này có hiệu suất tốt hơn bao gồm:
<!--METADATA TYPE="TypeLib" NAME="ADODB Type Library" UUID="00000205-0000-0010-8000-00AA006D2EA4" FILE="C:\Program Files\Common Files\System\ado\msado15.dll" VERSION="2.5" -->
Here là danh sách một số thư viện kiểu.
+1 đề xuất tuyệt vời! – Abel
Bạn đang đề cập đến truy vấn SQL được tham số hóa? –
có. sẽ cập nhật câu hỏi để làm rõ. cảm ơn! –