我正在使用ASP来显示MySQL的结果。与使用Oracle的方式一样,我已成功创建系统DSN:
这是我的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
%>
以及页面的结果:
首先,选择查询strSQL
将 NOT 获取任何内容,因为没有id=4
的记录。但是,正如你所看到的,rs不是空的,第二个response.write
丢失了,我很困惑。
实际上,如果你把三个response.write
放在像
do until rs.eof
...
rs.movenext
loop
这将是一个无限循环。所以,看起来rs不是空的,但我们看不到的东西?
更新 我查看了我的mysql中的日志,并在我更新页面后发现,sql查询只是这些:
完全没找到我的strSQL,为什么?
答案 0 :(得分:0)
我认为您实际上并未在rs
中创建记录集。尝试用这样的东西替换那个set语句:
set rs = Server.CreateObject("ADODB.recordset")
rs.Open sqlStr, objConn
答案 1 :(得分:0)
好的,这是我解决这个奇怪问题的方法:
修改如下的密钥代码:
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)
看看我的问题中的更新,用那些代码我发现mysql中的日志很奇怪,所以,必须是strSQL没有正确写入。 我不知道为什么,但它确实有效!