当我尝试将字母数字字符引入ms-access数据库时,我遇到了麻烦。我可以用数字和日期字符来做,但它似乎是字母数字的问题,
以下是我使用的代码:
Dim adoCon
Dim strSQL
Set adoCon=Server.CreateObject("ADODB.Connection")
adoCon.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("basededades.mdb")
'Here I am getting all the values previously passed by a form.
stringEntrada=Request.Form("stringEntrada")
stringSortida=Request.Form("stringSortida")
valoridHabitaciolliure=Request.Form("valoridHabitaciolliure")
numeropersones=Request.Form("numeroPersones")
nom=Request.Form("nom")
dni=Request.Form("dni")
tlf=Request.Form("tlf")
mail=Request.Form("mail")
ciutat=Request.Form("ciutat")
tipusH=Request.Form("tipusH")
diaReserva=Request.Form("diaReserva")
mail,nom,ciutat,tipusH,dni,valoridHabitaciolliure是来自文本输入表单的字母数字字符。 diaReserva,stringSortida,stringEntrada是日期形成文本输入表单。 tlf是一个整数变量。
strSQL="INSERT INTO Reserva (dni,tlf,diaReserva,inici,fi,tipusHabitacio) VALUES ("&dni&","&tlf&",'"&diaReserva&"','"&stringEntrada&"','"&stringSortida&"'," "&tipusH&")"
adoCon.Execute(strSQL)
当我看到插入到数据库中的值时,我意识到正确插入了像“diaReserva”或“stringSortida”这样的日期变量以及像“tlf”这样的数字变量。
要插入日期变量,我在sql查询中使用一个简单的“包围双精度”:'“& stringEntrada&”''
要插入数字,我只使用双:“& tlf&”
如果我尝试使用简单的'当我尝试插入字母数字时,例如:'“mail”'我没有收到任何错误,但数据库记录了一个空白值。
如果我尝试使用双“,如:”邮件“我收到错误。
如何在没有问题的情况下插入字母数字变量?
感谢您的时间,抱歉我的英语不好。
答案 0 :(得分:0)
您可以通过使用与此类似的参数化查询来避免“引用问题”并避免 SQL注入漏洞:
Dim con '' As ADODB.Connection
Dim cmd '' As ADODB.Command
Dim stringName, longSponsorID, datetimeDateJoined
Const adCmdText = 1
Const adVarWChar = 202, adInteger = 3, adDate = 7
Const adParamInput = 1
'' test data
stringName = "Gord"
longSponsorID = 5
datetimeDateJoined = Now
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Public\mdbTest.mdb;"
Set cmd = CreateObject("ADODB.Command")
cmd.CommandType = adCmdText
cmd.ActiveConnection = con
cmd.CommandText = _
"INSERT INTO Members " & _
"(memberName, sponsorID, dateJoined) " & _
"VALUES " & _
"(?, ?, ?)"
'' parameter for [memberName]
cmd.Parameters.Append cmd.CreateParameter("?", adVarWChar, adParamInput, 255, stringName)
'' parameter for [sponsorID]
cmd.Parameters.Append cmd.CreateParameter("?", adInteger, adParamInput, , longSponsorID)
'' parameter for [dateJoined]
cmd.Parameters.Append cmd.CreateParameter("?", adDate, adParamInput, , datetimeDateJoined)
cmd.Execute
Set cmd = Nothing
con.Close
Set con = Nothing