来自MySQL的ASP查询的奇怪响应

时间:2015-09-25 00:28:13

标签: mysql asp-classic

我正在使用ASP来显示MySQL的结果。与使用Oracle的方式一样,我已成功创建系统DSN:

enter image description here

这是我的asp代码

<%
'----------------------------------------------
' test connection 
'----------------------------------------------
Response.Charset="utf-8"
on error resume next
response.write "Test for connection to mysql" & vbcrlf
strConnect="driver={mysql odbc 5.1 driver};dsn=MYSQL;uid=your user name;password=your pass word;"
set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConnect

strSQL = "select name,address from teacher where id=4"
set rs = objConn.execute(strSQL)

if not rs.eof then
  response.write "Find some records!" & vbcrlf
  response.write "the data is :" & rs("name") & vbcrlf
  response.write "Yes!" & vbcrlf
else 
  response.write "Opps, No record found!" & vbcrlf
end if 
on error goto 0
%>

以及页面的结果:

enter image description here

首先,选择查询strSQL NOT 获取任何内容,因为没有id=4的记录。但是,正如你所看到的,rs不是空的,第二个response.write丢失了,我很困惑。 实际上,如果你把三个response.write放在像

这样的循环中
do until rs.eof
  ...
  rs.movenext
loop

这将是一个无限循环。所以,看起来rs不是空的,但我们看不到的东西?

更新 我查看了我的mysql中的日志,并在我更新页面后发现,sql查询只是这些: enter image description here

完全没找到我的strSQL,为什么?

2 个答案:

答案 0 :(得分:0)

我认为您实际上并未在rs中创建记录集。尝试用这样的东西替换那个set语句:

set rs = Server.CreateObject("ADODB.recordset")
rs.Open sqlStr, objConn

答案 1 :(得分:0)

好的,这是我解决这个奇怪问题的方法:

  1. 在ODBC管理器中删除系统DSN
  2. 修改如下的密钥代码:

    strConnect="driver={mysql odbc 5.1 driver};SERVER=your server's address;DATABASE=test_db;user=your username;password=yourpassword;"
    set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open strConnect
    strSQL = "select name,address from teacher where id=4"
    set rs = objConn.execute(strSQL)
    
  3. 看看我的问题中的更新,用那些代码我发现mysql中的日志很奇怪,所以,必须是strSQL没有正确写入。 我不知道为什么,但它确实有效!