上传图像后试图将数据插入数据库,ASP Classic和VBscript中出现语法错误



上传图像后,我正试图将一条记录插入access数据库。图像保存正确,但我无法使插入命令工作。

set o = new clsUpload
if o.Exists("cmdSubmit") then
    'get client file name without path
    sFileSplit = split(o.FileNameOf("txtFile"), "")
    sFile = sFileSplit(Ubound(sFileSplit))
    o.FileInputName = "txtFile"
    o.FileFullPath = Server.MapPath("ads") & "" & sFile
    o.save
    if o.Error = "" then
        response.write "Success. File saved to  " & o.FileFullPath & ". County = " &        o.ValueOf("County")
        Company = o.ValueOf("Company") 
        County = o.ValueOf("County")
        imgfile = sFile
        Set OBJdbConnection = Server.CreateObject("ADODB.Connection") 
        OBJdbConnection.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=C:UsersUserDesktopWebsites123justlistitwwwrootadmin123justlistit.mdb"
        Set sqlIns = Server.CreateObject("ADODB.Command")
        sqlIns.ActiveConnection = OBJdbConnection
        sqlIns.commandtext="insert into ads (company, county, image)values(?,?,?)"
        sqlIns.Parameters.Append sqlIns.CreateParameter("@company", adVarChar, adParamInput, 25, Company)
        sqlIns.Parameters.Append sqlIns.CreateParameter("@county", adVarChar, adParamInput, 25, County)
        sqlIns.Parameters.Append sqlIns.CreateParameter("@imgfile", adVarChar, adParamInput, 50, imgfile)
        sqlIns.execute
        OBJdbConnection.Close
    else
        response.write "Failed due to the following error: " & o.Error
    end if
end if
set o = nothing

我得到:

Microsoft JET Database Engine error '80040e14'
Syntax error in INSERT INTO statement. 

我认为这与尝试插入图像的文件名有关,但我不确定

您的两个参数名称(@company@county)与列名冲突。要么将参数名称更改为其他名称,要么(更好)将查询字符串中的标识符放在方括号中:

sqlIns.CommandText = "INSERT INTO [ads] ([company], [county], [image]) VALUES (?,?,?)"

使用方括号还可以避免标识符包含空格或与保留字冲突的问题。

最新更新