时尚

易语言操作mysql数据库实例

时间:2010-12-5 17:23:32  作者:百科   来源:时尚  查看:  评论:0
内容摘要:易语言里连MySQL,最省事的办法是用现成的模块,比如“易语言MySQL支持库”或者“libmysql.dll”封装。我习惯用后者,因为控制权在自己手里,出问题好排查。先下载一个对应版本的libmys

易语言里连MySQL,易语言操最省事的数据办法是用现成的模块,比如“易语言MySQL支持库”或者“libmysql.dll”封装。库实我习惯用后者,易语言操因为控制权在自己手里,数据出问题好排查。库实先下载一个对应版本的易语言操libmysql.dll,放到易语言程序目录下,数据然后在代码里声明API函数。库实别怕麻烦,易语言操声明一次以后就省心了。数据

声明部分大概长这样:

.版本 2 .DLL命令 mysql_init,库实 整数型, "libmysql.dll", "mysql_init" .参数 mysql, 整数型 .DLL命令 mysql_real_connect, 整数型, "libmysql.dll", "mysql_real_connect" .参数 mysql, 整数型 .参数 host, 文本型 .参数 user, 文本型 .参数 passwd, 文本型 .参数 db, 文本型 .参数 port, 整数型 .参数 unix_socket, 文本型 .参数 client_flag, 整数型 .DLL命令 mysql_query, 整数型, "libmysql.dll", "mysql_query" .参数 mysql, 整数型 .参数 query, 文本型 .DLL命令 mysql_store_result, 整数型, "libmysql.dll", "mysql_store_result" .参数 mysql, 整数型 .DLL命令 mysql_fetch_row, 整数型, "libmysql.dll", "mysql_fetch_row" .参数 result, 整数型 .DLL命令 mysql_num_fields, 整数型, "libmysql.dll", "mysql_num_fields" .参数 result, 整数型 .DLL命令 mysql_free_result, 整数型, "libmysql.dll", "mysql_free_result" .参数 result, 整数型 .DLL命令 mysql_close, , "libmysql.dll", "mysql_close" .参数 mysql, 整数型 

连接数据库就三步:初始化、连接、易语言操检查返回值。数据我一般写个子程序封装起来,库实省得每次重复写。比如:

.子程序 连接MySQL, 整数型 .参数 主机, 文本型 .参数 用户, 文本型 .参数 密码, 文本型 .参数 库名, 文本型 .局部变量 mysql, 整数型 mysql = mysql_init(0) .如果真 (mysql = 0) 返回 (0) .如果真结束 .如果真 (mysql_real_connect(mysql, 主机, 用户, 密码, 库名, 3306, "", 0) = 0) mysql_close(mysql) 返回 (0) .如果真结束 返回 (mysql) 

调用的时候,把返回值存到全局变量里,后面查询直接用。查询操作更简单,mysql_query传SQL语句,返回0表示成功。如果是SELECT,接着用mysql_store_result拿结果集,再用mysql_fetch_row逐行取。这里有个坑:mysql_fetch_row返回的是指针数组,易语言里得用“取变量地址”或者“指针到文本”来读。我通常写个循环,配合mysql_num_fields拿到列数,然后逐列转换。

举个实际例子,假设有个用户表,要查所有名字:

.局部变量 result, 整数型 .局部变量 row, 整数型 .局部变量 i, 整数型 .局部变量 列数, 整数型 .局部变量 名字, 文本型 mysql_query(mysql, "SELECT name FROM users") result = mysql_store_result(mysql) .如果真 (result ≠ 0) 列数 = mysql_num_fields(result) .判断循环首 (row = mysql_fetch_row(result) ≠ 0) ' row是行指针,第一个字段的地址就是row 名字 = 指针到文本(row) 输出调试文本(名字) .判断循环尾 () mysql_free_result(result) .如果真结束 

注意指针到文本只能读第一个字段。多字段的话,得用“取指针文本”或者手动计算偏移。我一般用“指针到文本”配合“指针相加”来遍历,但易语言里指针运算不太直观,所以更推荐用现成的MySQL模块,省得跟指针较劲。不过自己封装一遍,对理解底层有帮助。

插入和更新更直接,直接拼SQL字符串。但千万别忘了转义单引号,否则SQL注入或者语法错误。易语言有“子文本替换”函数,把单引号替换成两个单引号就行。比如:

.局部变量 sql, 文本型 sql = "INSERT INTO users (name) VALUES ('" + 子文本替换(名字, "'", "''", , , 真) + "')" mysql_query(mysql, sql) 

最后记得关连接。程序退出前调mysql_close,不然MySQL那边会留一堆sleep连接,时间长了拖慢服务器。我吃过这个亏,调试时反复运行,结果连接数爆了,还得去服务器kill进程。

易语言操作MySQL不难,核心就是那几个API函数。自己封装一次,以后复制粘贴就行。别用那些花里胡哨的ORM,直接写SQL最踏实。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap