ASP链接MYSQL问题
作者:admin 日期:2008-11-08
因为需要用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
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 | 查看次数: 1393
发表评论
你没有权限发表留言!