使用asp classic将字母数字字符插入ms-access数据库

时间:2013-05-21 07:22:57

标签: sql ms-access asp-classic

当我尝试将字母数字字符引入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”'我没有收到任何错误,但数据库记录了一个空白值。

如果我尝试使用双“,如:”邮件“我收到错误。

如何在没有问题的情况下插入字母数字变量?

感谢您的时间,抱歉我的英语不好。

1 个答案:

答案 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