找回密码
 加入
搜索
查看: 2757|回复: 7

[AU3基础] [已解决]--如何获取MYSQL检索出来的结果?

  [复制链接]
发表于 2010-12-25 11:37:27 | 显示全部楼层 |阅读模式
本帖最后由 kingfirekkk 于 2010-12-25 23:55 编辑

最近在捣鼓些小东西,要用到MYSQL数据库,基础比较差,使用phpmyadmin能够找出对应的结果,但用Autoit就不知道要怎么搞了。

例如MYSQL源语句如下,问题是:这些查询的结果,怎么处理呢?能否举个例子...

#include <MYSQL.AU3>

Global $MysqlConn = _MySQL_Init()
Global $pass = "root"
Global $connected = _MySQL_Real_Connect($MysqlConn, $SERVER, "root", $pass)
If $connected = 0 Then
        $errno = _MySQL_errno($MysqlConn)
        MsgBox(0, "Error:", $errno & @LF & _MySQL_error($MysqlConn))
        If $errno = $CR_UNKNOWN_HOST Then MsgBox(0, "Error:", "$CR_UNKNOWN_HOST" & @LF & $CR_UNKNOWN_HOST)
        _MySQL_Close($MysqlConn)
        _MySQL_EndLibrary()
;~         Exit
EndIf
_MySQL_Real_Query($MysqlConn,"SELECT COUNT(*) FROM 表名")             ;统计所有数据笔数;
_MySQL_Real_Query($MysqlConn,"SELECT * FROM 表名 WHERE 日期字段 like today%;")       ;统计今日目前已经测试数据笔数;
_MySQL_Real_Query($MysqlConn,"select * from test where to_days(Timedate) = to_days(now();");  查询当天所有数据
_MySQL_Real_Query($MysqlConn,"select * from test where date(Timedate) = curdate();"); 查询当天所有数据: 
_MySQL_Real_Query($MysqlConn,"select * from test where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(Timedate);");查询一周: 
_MySQL_Real_Query($MysqlConn,"select * from test where DATE_SUB(CURDATE(), INTERVAL INTERVAL 1 MONTH) <= date(Timedate);");;查询一个月: 
_MySQL_Real_Query($MysqlConn,"select * from test order by `Timedate` desc limit 5;");最后5行
_MySQL_Real_Query($MysqlConn,"slect * from test order by `Timedate` asc limit 5;");    最前5行
_MySQL_Real_Query($MysqlConn,"SELECT * FROM test ORDER BY `Timedate` DESC LIMIT 30;"); 最前30行
_MySQL_Real_Query($MysqlConn,"SELECT * FROM `test` WHERE `Timedate` LIKE '2010-12-24%';");  统计固定日期数据

评分

参与人数 1金钱 +30 收起 理由
ceoguang + 30 感谢修改主题分类

查看全部评分

 楼主| 发表于 2010-12-25 13:43:43 | 显示全部楼层
希望C版可以出手解答下...
发表于 2010-12-25 14:25:48 | 显示全部楼层
先写入数组 ,然后再用 array[*][*]读 .再写到 listview或别的地方 .好像论坛中有 .晚上在电脑上给你例子 .
发表于 2010-12-25 17:47:44 | 显示全部楼层
这是我刚开始调试代码,得到表的总数量,现在不用这个了。这个方法有点慢,你参考下。你会不会把大量数据一次性写入LISTVIEW,我只会一条一条的写。
#include <array.au3>
#include "mysql.au3"

;呼叫 产生DLL 如果有DLL 就不产生 如果没有就产生
__MySQL_ExtractEmbeddedDLL()

; 呼叫 SQL 范例
_MySQL_InitLibrary(); 呼叫 DLL 档  没有这行 程式会出现错误


$MysqlConn = _MySQL_Init();定义连接  没有这行 程式会看不懂连接语法


; 资料栏位 与笔数 范例
;sgBox(0, "笔数-资料栏位范例", "笔数-资料栏位范例")
;_MySQL_Real_Connect 语法($MySQL_ptr, 主机名, 使用者, 密码, 资料库名称, $Port = 0, $unix_socket = "", $Client_Flag = 0)
$connected = _MySQL_Real_Connect($MysqlConn, "127.0.0.1", "root","123", "outside");, "3306")

If $connected = 0 Then Exit MsgBox(16, 'Connection Error', _MySQL_Error($MysqlConn));假设连接错误 显示错误讯息

$query = "SELECT COUNT(1) FROM pack";products";设定资料库查询语法
_MySQL_Real_Query($MysqlConn, $query) ;资料库查询语法 使用_MySQL_Real_Query :可能会有中文判断的问题

;__MySQL_Real_Query($MysqlConn,"UPDATE products SET products_model ='PC-DISC' Where products_model='ABC-123'") 

;使用  _MySQL_Query 
;_MySQL_Query($MysqlConn,"UPDATE products SET products_model ='PC-DISC' Where products_model='蔡'") 


$res = _MySQL_Store_Result($MysqlConn);记录查询回来的结果

$fields = _MySQL_Num_Fields($res);栏位   数量回报用法

$rows = _MySQL_Num_Rows($res);资料  笔数   回报用法

MsgBox(0, "笔数-资料栏位","笔数:"&$rows & "-" & $fields&"栏位")



$array = _MySQL_Fetch_Result_StringArray($res) ;写入到数组
$data2=""

$data2 = $data2&$array[$rows][$fields-1]     ;如果要显示每一行,在这一行上做文章

MsgBox(0, '', "行数 :"&$data2)

评分

参与人数 1金钱 +60 收起 理由
ceoguang + 60 热心助人

查看全部评分

发表于 2010-12-25 18:33:20 | 显示全部楼层
用时在研究吧
发表于 2010-12-25 23:18:53 | 显示全部楼层
本帖最后由 ceoguang 于 2010-12-25 23:34 编辑

回复 2# kingfirekkk
4#的就是你要的代码了,结果通过_MySQL_Store_Result来获取.
最后别忘了用_MySQL_Free_Result来释放内存
 楼主| 发表于 2010-12-25 23:49:56 | 显示全部楼层
唉,还是没有看全Mysql.au3啊,里面是有这个函数的...谢谢C版及nbmpe了。。。
发表于 2012-6-12 14:12:25 | 显示全部楼层
好,有用,谢谢版主了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-19 01:52 , Processed in 0.085986 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表