易截截图软件、单文件、免安装、纯绿色、仅160KB

Windows下用GCC连接MySQL数据库

    一个网友在坛子上问到的问题,说用MinGW GCC编译运行一个连接MySQL数据库的程序时遇到错误:
undefined reference to `mysql_init@4'
undefined reference to `mysql_real_connect@32'
undefined reference to `mysql_close@4'

    我遂去MySQL官网下了个最新的Windows C Connector,然后按正常思路写了个最简单的连接测试程序,果然出现了同样的错误。
    后来在网上查了下,也看了下Mysql官网上别人的讨论,据称MySQL官方下载的Windows C开发包只能原生态支持CL编译器,而用GCC也并非不可,只是需要做一些额外的工作。先将后来试验成功的步骤笔记于此,主要参考有http://dev.mysql.com/doc/refman/5.0/en/windows-client-compiling.html。
    先下载一下MinGW工具包,下载地址是http://prdownloads.sourceforge.net/mingw/mingw-utils-0.2.tar.gz?download
    解压,将此工具包中的bin目录加入系统环境变量的Path变量。
    在Mysql开发包的lib目录下,即libmysql.lib和libmysql.dll的所在目录,运行
reimp -d libmysql.lib

    得到导出文件LIBMYSQL.def,
    然后在此目录运行MinGW GCC本身自带的命令
dlltool -k -d libmysql.def -l libmysql.a

    得到我们最后需要链接的库文件libmysql.a。
    在Mysql开发包的目录下(即与include和lib同级)新建我们的测试文件main.c,测试源码如下:
#include <stdio.h>
#include <winsock2.h>
#include "mysql.h"
int main()
{
MYSQL mysql;
mysql_init(&mysql);
if(!mysql_real_connect(&mysql, "localhost", "root", "admin", "demo", 3306, NULL, 0))
{
printf("\nconnect error!");
}
else
{
printf("\nconnect success!\n");
}
mysql_close(&mysql);
return 0;
}
    在源文件所在路径运行编译命令:
gcc -Iinclude -Llib main.c -llibmysql

    即编译成功。数据库亦连接成功。
    测试环境:
操作系统:Windows XP Prefessional sp2
数据库版本:MySQL-5.0.22-commu


相关文档:

mysql相关

显示、设置自动提交 show variable like 'autocommit'    set autocommit=1 or 0
设置日志:
在/etc/mysql/my.cnf中设置如下可再slow.log中输出运行时间超过一秒的sql语句
[mysqld]
log-slow-queries = /tmp/slow.log
long_query_time = 1
设置日志输出运行超过1秒的sql语句 set global long_query_ti ......

mysql下的分页存储过程

CREATE PROCEDURE pro_page(
 in _sql varchar(1000),
 in _order varchar(1000),
 in _pagecurrent int,
 in _pagesize int
)
BEGIN
 if _pagesize<=1 then
  set _pagesize=20;
 end if;
 if _pagecurrent < 1 then
  set _pagecurrent = 1;
&n ......

MySQL 事务 存储过程 实例

USE dxdb;
DELIMITER //
#获取流水号
DROP PROCEDURE IF EXISTS get_sid;
CREATE PROCEDURE get_sid(para_domain VARCHAR(20), out para_sid BIGINT UNSIGNED)
BEGIN
START TRANSACTION;
UPDATE t_sid SET sID=sID+1 WHERE cDomain=para_domain;
SELECT sID INTO para_sid from t_sid WHERE cDomain=para_domain;
......

Mysql用户添加及权限分配

     格式:grant [PRIVILEGES]  on [databaseName.tableName] to [userName]@[host] identified by [password] with grant option;
     eg1:  grant select on mysql.user to wqh@localhost
     eg2:GRANT SELECT,INSERT,UPDATE,DELETE,CREATE ......

删除MYSQl BIN LOG 日志

1.查看档案
mysql> show binary logs;
+----------------+-----------+
| Log_name | File_size |
+----------------+-----------+
| ablelee.000001 | 150462942 |
| ablelee.000002 | 125 |
| ablelee.000003 | 106 |
+----------------+-----------+
2.删除bin-log(删除ablelee.000003之前的而没有包含ablel ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号