您的位置:首页 > 编程语言 > Java开发

Eclipse+CDT下连接MySql数据库

2009-03-13 18:00 429 查看
Eclipse+CDT下连接MySql数据库
操作系统:windowsXP

开发环境:Eclipse,CDT,Mysql5.16(mysql-noinstall-5.1.6-alpha-win32)

准备工作:

1) reimp.exe 用来将libmysql.lib转换成libmysql.def和libmysql.a文件

http://www.qtcn.org/download/mingw-utils-0.3.tar.gz

2) 从网上下载 mysql-noinstall-5.1.6-alpha-win32.rar这个包,里面有我们需要的mysql开发头文件和必要的库文件

3) gdb.exe要在6.6版本以上,否则DEBUG的时候会出现很多莫名其妙的错误。

代码:(从网上找来的)

#include <windows.h>
#include <stdio.h>
#include <string.h>
#include "include/mysql.h"

int main(int argc, char * argv[]) {
char szTargetDSN[] = "test";
char szSqlText[500] = "";
char aszFlds[25][25];
MYSQL * myData;
MYSQL_RES * res;
MYSQL_FIELD * fd;
MYSQL_ROW row;
int i, j, k;
BOOL bCreate = TRUE;

if ((myData = mysql_init((MYSQL*) 0))
//初始化数据结构
&& mysql_real_connect(myData, "localhost",
//连接数据库
"root", "root", szTargetDSN, MYSQL_PORT, NULL, 0))
{
if (bCreate)
{
sprintf(szSqlText, //构造SQL语句,新建一张表
"create table mytable "
"(time datetime, s1 char(6), "
"s2 char(11), s3 int, s4 int)");
if (mysql_query(myData, szSqlText))
//执行SQL语句
{//执行SQL语句出错
printf("Can't create table");
mysql_close(myData);
return FALSE;
}
}
sprintf(szSqlText, "insert into mytable "
//向表中插入数据
"values('2000-3-10 21:01:30',"
//注意时间的格式
"'Test','MySQLTest',2000,3)");
if (mysql_query(myData, szSqlText))
{//执行SQL语句出错
printf("Can't insert data to table");
mysql_close(myData);
return FALSE;
}
sprintf(szSqlText, "select * from mytable ");
if (mysql_query(myData, szSqlText))
//进行数据检索
{
//执行SQL语句出错
mysql_close(myData);
return FALSE;
} else {
res = mysql_store_result(myData);
//取得查询结果
i = (int) mysql_num_rows(res);
//取得有效记录数
printf( "Query: %s/n%ld records found:n", szSqlText, i ) ;
for ( i = 0;fd = mysql_fetch_field(res);i++ )
strcpy( aszFlds[ i ], fd->name );
//取得各字段名
for (i = 1; row = mysql_fetch_row(res);)
//依次读取各条记录
{
j = mysql_num_fields(res);
//取得记录中的字段数
printf("Record #%ld:-/n", i++);
for (k = 0; k < j; k++)
//输出各字段的值
printf(" Fld #%d (%s): %s/n",k + 1,aszFlds[k],(((row[k] == NULL) || (!strlen(row[k]))) ? "NULL" : row[k]));
puts("==============================/n");
}
mysql_free_result(res);
}
} else {//连接数据库出错
printf("Can't connect to the mysql server ");
mysql_close(myData);
return FALSE;
}
mysql_close(myData);
return TRUE;
}

在Eclipse中新建工程,并新建mysql_conn.c的文件(略)

下面主要描述如何编译通过。

将mysql-noinstall-5.1.6-alpha-win32/ include目录拷贝到工程所在目录,
保证#include "include/mysql.h" 这句有效。
如果这个时候编译一定会报 undefined reference to 'mysql_init@4' 这类错误。

步骤一:(编译通过)

在mysql-noinstall-5.1.6-alpha-win32中找到libmysql.lib文件,并拷贝到和reimp.exe同一目录下,执行:

>reimp libmysql.lib

此时会自动产生 libmysql.def和libmysql.a文件,用文本编辑器打开会看到mysql_init@4这项,这个就是我们需要的,然后将libmysql.a文件拷贝到工程目录下的lib目录中,并修改MAKEFILE:

g++ mysql_conn.c -L "D:/Program Files/eclipsework/mysql_conn/lib" -l "mysql" -g -o mysql_conn

注意: -l "mysql",并不是libmysql

此时代码就能正常编译成mysql_conn.exe了。

步骤二:(设置编译项,为DEBUG做准备)

1)Project->Properties

2)C/C++ Build ->Settings->Binary Parsers->PE Windows Parser->Apply->OK

由于是在WINDOWS平台上运行,所以必须设置成PE Windows Parser,否则在Eclipse中run都不行,会提示不识别该二进制文件

3)Run->Run Configurations...

4)C/C++ Local Application->右键->new..

5)Name :mysql_conn Project :mysql_conn C/C++ Application : ..../mysql_conn.exe

重新编译,后就可以正常的在Eclipse中运行了。

步骤三:如何进行DEBUG

1. 设置断点。直接双击对应的代码行左边即可。

2. 设置DEBUG项,比较重要。

1) run->debug configuration..

2) C/C++ Local Application->mysql_conn->Debugger

3)GDB command set: Standard (Windows)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: