使用mingw编程,如何 *** 作mysql 数据库,最好有例程。

使用mingw编程,如何 *** 作mysql 数据库,最好有例程。,第1张

下载一个mingw的utils包,用0.3版本,0.41版本有问题。

拷贝mysql/lib/opt下的libmysql.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 <iostream>

#include <windows.h>

#include <cstdlib>

#include <cstdio>

#include <mysql.h>

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 = 0i <num_fieldsi++)

{

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 = 0i <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

注意编译器一定要和MYSQL的平台版本一致,32位的用32位的编译器编译,64位的用64位的编译器编译。

准备工作:MYSQL的目录:D:\SQL_Server\mariadb

Qt5.1.1的目录:C:\Qt

1. 先将D:\SQL_Server\mariadb中的include\和lib\文件夹复制到根目录(C:),因为后面make时路径不能有空格。

2. 打开QT5.1.1 for Desktop(MinGW 4.8)

cd C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\src\plugins\sqldrivers\mysql

qmake "INCLUDEPATH+=D:\SQL_Server\mariadb\include" "LIBS+=D:\SQL_Server\mariadb\lib\libmysql.lib" mysql.pro

mingw32-make

如果出现找不到mysql.h文件就用qtcreator打开mysql.pro文件,配置项目,然后编译,就会出现错误提示,把#include 改成#include ,编译就行了,或回到命令行再次执行mingw32-make即可.

3. 编译成功后。

进入到C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\plugins\sqldrivers目录下,选中qsqlmysql.dll和 qsqlmysqld.dll两个文件,

复制到C:\Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\sqldrivers目录下。

我在编译oracle驱动时也遇到了这个错误,因为我安装的是QT-VS,所以后来在VS中打开.pro文件,配置了一下附加包含目录和附加依赖项目就可以了;(分别为:Oracle\..\OCI\include Oracle\..\OCI\lib\MSVC\oci.lib )。

希望对遇到同样问题的人有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6120177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存