展开全部
下载一个mingw的utils包,用0.3版本,0.41版本有问题。
拷贝mysql/lib/opt下的62616964757a686964616fe59b9ee7ad9431333332623332libmysql.lib文件到mingw的home/$user目录下,拷贝mysql/lib/opt/libmysql.dll文件到mingw的bin目录下.
把utils的包解压,把bin目录下的文件拷贝到mingw的bin目录下.
进行mingw的环境,执行
reimp -d libmysql.lib
dlltool -k -d libmysql.def -l libmysql.a
把生成的libmysql.a拷贝到mingw的lib下
把mysql/include下的全部文件拷贝到mingw/include下(省事)
在mysql中创建数据库test,创建表mt(id int , content varchar(20));
写c代码,m.cc
#include
#include
#include
#include
#include
using namespace std;
MYSQL *conn;
int main() {
MYSQL_RES * res_set;
MYSQL_ROW row;
unsigned int i, ret;
MYSQL_FIELD * field;
unsigned int num_fields;
conn = mysql_init(NULL);
if(conn != NULL)
cout << "mysql_init success!" << endl;
else {
printf("failed !\n");
return 0;
}
ret = mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gbk");//最好与数据库charset一致
if(ret == 0)
cout << "mysql_options success!" << endl;
else printf("failed !\n");
if(mysql_real_connect(conn, "localhost", "root","root", "test", 0, NULL, 0) != NULL)
cout << "mysql_real_connect success!" << endl;
else printf("failed !\n");
mysql_query(conn, "INSERT INTO mt VALUES (1,'ABCDEF'),(2,'汉字支持');");
printf("insert affect %d sentences\n", mysql_affected_rows(conn));
if(mysql_query(conn,"SELECT * FROM mt"))
cout << "mysql query failed!\n";
res_set = mysql_store_result(conn);
if (res_set == NULL)
cout << "res_set is null" << endl;
num_fields = mysql_num_fields(res_set);
for(i = 0; i < num_fields; i++)
{
field = mysql_fetch_field_direct(res_set, i);
printf("%s\t\t", field->name);
}
cout << endl;
while ((row = mysql_fetch_row(res_set)) != NULL)
{
for (i = 0; i < mysql_num_fields(res_set); i ++)
{
printf("%s\t\t",row[i] != NULL ? row[i] : "NULL");
}
printf("\n");
}
mysql_close(conn);
return 0;
}
编译:g++ -lmysql -o m m.cc