従来のASPのvbscriptでパラメータ化されたクエリを使用して、フォームデータをSQLデータベースに挿入しようとしています(ASPの経験はありません)。パラメータを宣言するためにいくつかのバリエーションを試しましたが、すべてエラーが発生します。
ADODB.Command error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another
私のデータベースのテーブルは、ApplicationId フィールドに null を許可せず、int 型です。TimeStamp 列は日時です。他のすべてのフィールドは varchar(MAX) です
これが私のコードの最近のバリエーションです。エラーなどを見つけることができればお知らせください
Set conn = Server.CreateObject("ADODB.Connection")
conn.Mode = 3
conn.open "Provider=SQLOLEDB;Data Source=xxx.xxx.xxx.xxx,xxxx;database=db_example;uid=user;pwd=password;"
Dim oCmd
set oCmd = Server.CreateObject("ADODB.Command")
Dim sSQL
sSQL = "INSERT INTO tbl_Application (ApplicationNumber, Expenses, Name, Why) VALUES (?, ?, ?, ?);"
oCmd.CommandText = sSQL
oCmd.ActiveConnection= conn
Dim param1
Set param1 = oCmd.CreateParameter("ApplicationNumber",adInteger,adParamInput)
param1.value = session.sessionId
oCmd.Parameters.Append param1
Append の前後に値を代入しようとしました
Dim param2
Set param2 = oCmd.CreateParameter("Expenses",adChar,adParamInput,255)
param2.value = session("Expenses")
oCmd.Parameters.Append param2
Dim param3
Set param3 = oCmd.CreateParameter("Name",adChar,adParamInput,255)
param3.value = session("Name")
oCmd.Parameters.Append param3
Dim param4
Set param4 = oCmd.CreateParameter("Why",adChar,adParamInput,255)
param4.value = session("Why")
oCmd.Parameters.Append param4
Dim oRS
Set oRS = oCmd.Execute()
また、サイトがハッキングされたため、パラメーター化されたクエリでコードを書き直しています。これは、レコードセットなどを使用する必要がある場合に備えて機能した(ただし、インジェクションは許可された)元のコードです
Set conn = Server.CreateObject("ADODB.Connection")
conn.Mode = 3
conn.open "Provider=SQLOLEDB;Data Source=xxx.xxx.xxx.xxx,xxxx;database=db_example;uid=user;pwd=password;"
set rsAddEvent = server.createobject("adodb.recordset")
rsAddEvent.open "tbl_Application", conn, 2, 3
rsAddEvent.addnew
rsAddEvent("ApplicationNumber") = session.sessionId
rsAddEvent("TimeStamp") = now()
rsAddEvent("Applicant") = session("Applicant")
rsAddEvent("Email") = session("Email")
rsAddEvent("Pet") = session("Pet")
rsAddEvent("Address") = session("Address")
rsAddEvent("Postal") = session("Postal")
rsAddEvent("HomePhone") = session("HomePhone")
rsAddEvent("WorkPhone") = session("WorkPhone")
rsAddEvent("Employed") = session("Employed")
rsAddEvent("Employer") = session("Employer")
rsAddEvent("Unemployment") = session("Unemployment")
rsAddEvent("FormerEmployer") = session("FormerEmployer")
rsAddEvent("Dependants") = session("Dependants")
rsAddEvent("Income") = session("Income")
rsAddEvent("OtherIncome") = session("OtherIncome")
rsAddEvent("Funds") = session("Funds")
rsAddEvent("Circumstance") = session("Circumstance")
rsAddEvent("Afford") = session("Afford")
rsAddEvent("Spent") = session("Spent")
rsAddEvent("Expenses") = session("Expenses")
rsAddEvent("Name") = session("Name")
rsAddEvent("Email") = session("Email")
rsAddEvent("Why") = session("Why")
rsAddEvent.update
rsAddEvent.movelast
ここまで読んでくれてありがとう