注册 登录
编程论坛 ASP技术论坛

请教一下关于“Microsoft OLE DB Provider for ODBC Drivers '80040e14'”的问题

far286 发布于 2012-09-18 11:57, 2163 次点击
各位前辈:你们好!
             我是刚学ASP不久的新人,在学到关于数据库的时候遇到了问题,请求大家帮一帮忙,因为我的系统用的是WIN7普通家庭版,所以在设置运行环境的时候我选用了NETBOX软件,数据库我选用的是ACCESS.在调试关于数据库问题的时候出现了些问题,现在想请求各位前辈帮忙寻求解决的办法,谢谢!
下面是程序代码:
     
          Dim strsql,sqla,sqlb,rs
          sqla="insert into users(name,password"
                  sqlb="values('"& session("name")&"','"& session("password") &"'"
          If session("tel")<>""Then
          sqla=sqla & ",tel"
          sqlb=sqlb &",'"& session("tel")&"'"
          End If
          If session("email")<>"" Then
          sqla=sqla &",email"
          sqlb=sqlb&",'"& session("email")&"'"
          End If
          If session("sex")<>"" then
          sqla=sala &",sex"
          sqlb=sqlb &",'"& session("sex")&"'"
          End if
          If session("add_number")<>""Then
          sqla=sqla & ",add_number"
          sqlb=sqlb &",'"& session("add_number")&"'"
          End If

          strsql=sqla &")"& sqlb &")"
        db.execute(strsql)
                    ......
                    ......
                    ......

----------------------------------------------------------------------------------------------------------
连接数据库的文件代码为:
           <%
             Dim db
             Set db=server.CreateObject("adodb.connection")
         db.open "provider=microsoft.jet.oledb.4.0;data source="& server.mappath("userinfo.mdb")&""
     %>
---------------------------------------------------------------------------------------------------------------
    在调试程序的时候就在页面上出现:
                            Microsoft JET Database Engine '80040e14'

                          无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。

                        错误指向:db.execute(strsql)这一句
请问各位前辈到底是什么原因?要怎样才能解决,谢谢!
6 回复
#2
netlin2012-09-18 18:34

在 db.execute(strsql) 前面加上下面的两句进行调试:
response.write strsql
response.end
#3
far2862012-09-18 22:15
谢谢板主给我的宝贵信息,然后我想再问一下,在 db.execute(strsql) 前面加上(response.write strsql  response.end)这两句的作用是什么???我按你的提示进行了调试,令我兴奋的是错误的提示没有了,但却在页面上就执行了response.write strsql这句,将整个要添加记录的SQL语句输出来了,其实我最想知道的就是要怎样做才能把我所要增加的数据添加到数据库中,而不时直接输出SQL语句,难道我在连接数据库的时候做错了什么?请板主示下,多给我点提示吧,到底要怎样才能成攻连接到数据库从而做到轻松存取数据,请板主多多帮忙,谢谢!
#4
cnfarer2012-09-19 06:35
显示下:strsql=sqla &")"& sqlb &")"结果,估计没得到正确的SQL语句
#5
far2862012-09-19 09:01
不好意思,我在输入 :      If session("sex")<>"" then
                              sqla=sala &",sex"
                         sqlb=sqlb &",'"& session("sex")&"'"
的过程中把sqla=sala &",sex"中的"="号右边的sala打错了应该为sqla.这样就能正确的输出完整的SQL语句了
#6
yms1232012-09-19 10:41
Dim strsql,sqla,sqlb,rs
sqla="insert into users(name,password"
sqlb="values('"& session("name")&"','"& session("password") &"'"
If session("tel")<>""Then
   sqla=sqla & ",tel"
   sqlb=sqlb &",'"& session("tel")&"'"
End If
If session("email")<>"" Then
   sqla=sqla &",email"
   sqlb=sqlb&",'"& session("email")&"'"
End If
If session("sex")<>"" then
   sqla=sala &",sex"
   sqlb=sqlb &",'"& session("sex")&"'"
End if
If session("add_number")<>""Then
   sqla=sqla & ",add_number"
   sqlb=sqlb &",'"& session("add_number")&"'"
End If
strsql=sqla &")"& sqlb &")"
db.execute(strsql)
你这一大堆if判断可能导致sql语句拼写出问题
或者彻底避免这种问题可以使用ADODB.ReocrdSet
Dim strsql,sqla,sqlb,rs
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.Open "select * from [users]",conn,1,3
rs.AddNew
rs("name")=session("name")
rs("password")=session("password")
If session("tel")<>""Then
   rs("tel")=session("tel")
End If
If session("email")<>"" Then
   rs("email")=session("tel")
End If
If session("sex")<>"" then
   rs("sex")=session("sex")
End if
If session("add_number")<>""Then
   rs("add_number")=session("add_number")
End If
rs.Update
rs.Close
Set rs=Nothing
这样就避免SQL拼写错误了
#7
far2862012-09-19 15:15
谢谢你们的帮助,问题终于解决了,真的万分感谢!超感动的!
1