ASP链接MYSQL问题

因为需要用ASP操作Mysql数据库,下了个mysql for odbc的驱动,连接成功,但操作有一些问题如下:

    1、RecordSet的addnew,update等方法不能使用;
    2、分页有点问题,不支持RecordSet.absoultpage等书签;
    3、“select top n....”这样的方法不能用,在mysql中可以Select语句后面用“limit srart,num”来代替,这点更灵活。
    4、后来采用limit来分页,发现很有好处,特别是对于大表,我查询的一张表有超过10亿条记录,用limit则很快,因为不必创建大记录集。但是,这样无法得到总页数,所以就用了两次查询,一次用于统计记录数:
"select count(field) as RecordsCount from table......"
可是问题出现了:这个count出来的列值是正确的,但就是不知是类型的字段,不是整值型的,且不能转换,这样用它进行页数计算就出错了(用它除以每页记录数),如:
response.write rs("recordscount") '正确输出
response.write rs("recordscount")/20 '错误,类型不匹配
用STR(),INT(),CINT(),CLONG(),VAL()等都不能转换,也提示类型不匹配。
有朋友遇到过吗?请赐教。
    5、中文字符显示为"???"问题,可设置:conn.Execute("SET NAMES 'gb2312'")解决。
    6、连接字符串:strC 
-------------------------------------------------------------------------------------------------------------------

1、RecordSet的addnew,update等方法不能使用;
答:  用MySQL Administrator管理员登录,选User Administration后选择用户(Users Accounts)为你登录的用户分配相关权限

    2、分页有点问题,不支持RecordSet.absoultpage等书签;
答:   Mysql ODBC 3.51是支持RecordSet.absoultpage的,可能分页时没有获取正确的记录数,如果不能正确获取,请设置客户端游标为3

例:
'创建对象   
  set   rs   =   server.CreateObject("ADODB.RECORDSET")   
  rs.CursorLocation   =   3         '必须加这句,不然rs.RecordCount  这个属性就不支持
  '执行SQL语句   
  rs.Open   sql,conn,3,1   
  rs.PageSize   =   PAGESIZE   
  pagecount   =   rs.PageCount   
  counts   =   rs.RecordCount   
  if   pages   >   pagecount   then   pages   =   pagecount   
  if   not   rs.eof   then   rs.AbsolutePage   =pages   
  .....   
  这样没错的


或arrA=rs.getrows   '将记录集放在一个二维数组中   
  response.write   ubound(arrA,2)+1        '显示记录总数

    3、“select top n....”这样的方法不能用,在mysql中可以Select语句后面用“limit srart,num”来代替,这点更灵活。
答:        同意。。。

    4、后来采用limit来分页,发现很有好处,特别是对于大表,我查询的一张表有超过10亿条记录,用limit则很快,因为不必创建大记录集。但是,这样无法得到总页数,所以就用了两次查询,一次用于统计记录数:
"select count(field) as RecordsCount from table......"
可是问题出现了:这个count出来的列值是正确的,但就是不知是类型的字段,不是整值型的,且不能转换,这样用它进行页数计算就出错了(用它除以每页记录数),如:
response.write rs("recordscount") '正确输出
response.write rs("recordscount")/20 '错误,类型不匹配
用STR(),INT(),CINT(),CLONG(),VAL()等都不能转换,也提示类型不匹配。
有朋友遇到过吗?请赐教。
答:ASP转换函数是cstr,cint,clng你用对了吗?如果不行,可以在MYSQL查询语句中用CONCAT()或CAST()试试!

    5、中文字符显示为"???"问题,可设置:conn.Execute("SET NAMES 'gb2312'")解决。
答:可以在ASP输出或写入数据库时设置代码页:<%@ codepage=936%>
    6、连接字符串:strC
答:直接用"DNS=xxxxx"更简单且不会把密码显示在代码中。。。xxxxx为ODBC源! 



'引用自http://bbs.54master.com/127352,1,68


[本日志由 admin 于 2008-11-16 11:22 AM 编辑]
文章来自: 本站原创
引用通告地址: http://www.is21.cn/trackback.asp?tbID=498
Tags:
评论: 0 | 引用: 0 | 查看次数: 1340
发表评论
你没有权限发表留言!