www.2527.com_澳门新葡8455手机版_新京葡娱乐场网址_
做最好的网站

C语言连接MySql数据库,情状布置

2019-07-07 02:28 来源:未知

图片 1

 

  return 0;

 注意事项:

 

{

图片 2

4.执行:qmake –o Makefile INCLUDEPATH ="D:include" LIBS ="D:liblibMySQL.lib" MySQL.pro  (INCLUDEPATH是你的MySQL的include文件路径,LIBS是你lib所在目录)

using namespace std;

测试结果:

9.继续nmake,继续出错

       query=" select * from user ";

 

图片 3

(1)       dlltoll.exe  存在于 DEV-C 目录下(C:Program FilesDEV-CPPmingw32bin);而 libmySQL.def 和 libmySQL.dll 存在于 MySQL目录下。首先需要把libmySQL.def 和 libmySQL.dll 拷贝到dlltoll.exe 所在的目录。而不是相反,把dlltoll.exe 拷贝 到MySQL目录下libmySQL.dll所在的目录。这是 因为libmySQL.dll  的全路径上,有 “MySQL server 5.1”,中间有空格,这会影响 dlltool 命令的执行,产生错误信息

1.在Linker settings->Link libraries中添加libmysql.lib的路径

 

目的:因为DEV-C 使用的编译器是gcc, 而 MySQL自带的libmysql.dll 只支持Visual Stdio。为此,需要从libmysql.dll 生成libmysql.a。

(总之就是让编译器能找到libmysql.lib和mysql.h)

 

}

#include <stdio.h>  #include <winsock2.h>  #include <mysql.h>  /*数据库连接用宏*/  #define HOST "localhost"  #define USERNAME "root"  #define PASSWORD "123456"  #define DATABASE "test"    int main()  {      char *query;      query="select * from t2";      query_sql(query);      return 0;  }  void query_sql(char* sql)  {      MYSQL my_connection; /*这是一个数据库连接*/      int res; /*执行sql語句后的返回标志*/      MYSQL_RES *res_ptr; /*指向查询结果的指针*/      MYSQL_FIELD *field; /*字段结构指针*/      MYSQL_ROW result_row; /*按行返回的查询信息*/      int row, column; /*查询返回的行数和列数*/      int i, j;      /*初始化mysql连接my_connection*/      mysql_init(&my_connection);      /*建立mysql连接*/      if (NULL != mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD,                                     DATABASE, 0, NULL, CLIENT_FOUND_ROWS))  /*连接成功*/      {          printf("数据库查询query_sql连接成功!n");          /*设置查询编码为gbk,以支持中文*/          mysql_query(&my_connection, "set names gbk");          res = mysql_query(&my_connection, sql);          if (res)   /*执行失败*/          {              printf("Error: mysql_query !n");              /*关闭连接*/              mysql_close(&my_connection);          }          else     /*现在就代表执行成功了*/          {              /*将查询的結果给res_ptr*/              res_ptr = mysql_store_result(&my_connection);              /*如果结果不为空,就把结果print*/              if (res_ptr)              {                  /*取得結果的行数和*/                  column = mysql_num_fields(res_ptr);                  row = mysql_num_rows(res_ptr);                  printf("查询到 %d 行 n", row);                  /*输出結果的字段名*/                  for (i = 0; field = mysql_fetch_field(res_ptr); i  )                      printf("s ", field->name);                  printf("n");                  /*按行输出結果*/                  for (i = 1; i < row 1; i  )                  {                      result_row = mysql_fetch_row(res_ptr);                      for (j = 0; j < column; j  )                          printf("s ", result_row[j]);                      printf("n");                  }              }              /*不要忘了关闭连接*/              mysql_close(&my_connection);          }      }      else      {          printf("数据库连接失败");      }  }

虽然就这么几步简单的东西,耗费了我很长的时间,总有不可预料的错误产生,下次再来试下Mingw编译。

       if (!mysql_real_connect(&mysql,"localhost", "root", "", "mysql",3306,NULL,0))

3.在#include <mysql.h>之前添加#include <winsock2.h>(网上很多资料没有这一步,但是我这边实际操作时发现不加这一句编译无法通过)

图片 4

       {

图片 5

图片 6

       MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示

操作系统:Windows7(32位)
编译软件:Code::Blocks 10.05
数 据 库:mysql-5.1.62-win32

图片 7

   不起作用

2.在Search directories->的Compiler中添加mysql.h的文件夹路径

3.使用命令提示符进入qt源文件目录,比如我的:D:Qt4.8.1srcpluginssqldriversmysql

       res=mysql_store_result(&mysql);


 将D:liblibmysql.lib复制到s2010的目录,如:D:Program FilesMicrosoft Visual Studio 10.0VClib

int main()

数据库内的数据:

 

Dlltool  --input-def   libmySQL.def  --dllname  libmySQL.dll  --output-lib libmySQL.a -k

测试代码:

图片 8

       char *query; //查询语句

图片 9

 

(2)

 

 打开D:Qt4.8.1srcsqldriversmysql中的qsql_mysql.h文件,修改第52行,将

    奇怪的是,在 Tools---Compiler Options---Directories --- C Includes 或 C Includes中包含

1.将include和lib文件夹拷出来放到没有空格的路径中,比如我的是在D盘根目录。

          printf("Connected...n");

出现我们需要的驱动啦!将下面四个文件拷到D:Qt4.8.1pluginssqldrivers里就可以了

                printf("%s:   ",row[t]);

经过近一天的折腾,终于搞定了MySQL驱动的编译,使用的是msvc的编译器,真是很麻烦,网上找了很多资料,都是针对mingw的(这个应该很简单,下周折腾吧,没精力了)。使用msvc来编译,对着教程都不能成功,各种各样的错误,不断的重装……今天写出来我遇到的问题及解决方法,希望遇到这些问题的朋友不用再心力交瘁了,呵呵……

       mysql_free_result(res);

1.Qt libraries 4.8.1 for Windows (VS 2010, 235 MB)

a) 要想在程序中使用mysql数据库,需要在

 

参考了以下两篇文章

开始工作:

            {

 7.执行nmake命令

       {

6.打开开始菜单中Qt源文件目录的Command Prompt

       } else

2.下载Mysql,并全部安装(我用的是5.5.22-win32),要保证安装目录里有include和lib文件夹

       t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

 

   Reimp  -d   libmysql.lib (似乎reimp 并不包含在DEV-C的安装包中,需要另外下载)

10.继续执行nmake,成功了,再执行nmake release,又成功了。这时D:Qt4.8.1srcpluginssqldriversmysqlrelease和debug目录如下

   Reimp包含在 mingw-utils中,因此需要下载  mingw-utils。注:如果在DEV-C中的 Project ---Project Option --- Parameters Linker 中不指定 libmySQL.a 的全路径,也会出现类似

5.这是D:Qt4.8.1srcpluginssqldriversmysql目录里应该生成了响应文件,如下:

            printf("编码设置失败n");

图片 10

 考虑到 dlltoll.exe 存在于 C:Program FilesDEV-CPPmingw32bin中,因此可以把 libmySQL.dll 拷贝到此目录

我使用的是Qt 4.8.1和MSVC2010,首先下载:

   C:Program FilesMySQLmysql-5.1.38-win32include

 8.如果提示以下错误

  WSADATA wsadata;

2.liblibmysql.dll拷到system32文件夹里,为了防止报错

           printf("执行查询时出现异常: %s",mysql_error(&mysql));

图片 11

本文内容包括两部分:

#include <mysql.h>修改为mysql.h所在的目录,比如我的在D盘,修改为#include <D:includemysql.h>,然后保存。

       query="SET CHARACTER SET GBK"; //设置编码

b) 想在程序中使用多线程,需要在 Project | Project Option’ | Compiler Options | Linker Sheet 在linker 一栏添上

可以用下面的代码测试DEV-C的环境设置是否正确

(3) 生成libmySQL.a 后,还需要在DEV-C 的 ‘Project Option’ | Compiler Options | Linker Sheet 在linker 一栏添上libmySQL.a 的全路径(含文件名)。

       {                          

*/

       while(row=mysql_fetch_row(res))

            }

    -Wall 和-W

undefined reference to `mysql_real_query@12'

#include "mysql.h"

c) 有网文推荐 在 Project |‘Project Option’ | Compiler Options |的 Copliler 和 C Compiler 框中添加

            printf("n");

为使上一命令正确执行,需要注意以下几点:

“…….installation problem Cannot exec ‘as’”

/*

       }

  system("PAUSE");

(1)

二。windows下 devc c语言访问mysql数据库 环境配置

#include <winsock.h>

{

       if(t)

(2) 上一命令中的libmySQL.def 不是,MySQL安装后即存在的那个文件。而是必须使用下面的命令,基于libmysql.lib 生成。

}

一。为 DEV-C 生成 libmysql.a 的过程

但是虽然自己也是用的 DEV-C 4.9.9.2版,WindowsXP系统,按照这两篇文章的指示设置却不成功,对其进行了一些改进。具体情况如下。

       MYSQL_RES *res; //这个结构代表返回行的一个查询结果集

  WSAStartup(0x101, (LPWSADATA)& wsadata);

            for(t=0;t <mysql_num_fields(res);t )

可以通过比较新生成的 libmySQL.def  和 在另一目录下的 MySQL 自带的同名文件的大小,发现两者是不同的。若错误地使用MySQL 自带的libmySQL.def文件,执行dlltool命令时会出现一系列类似下面的错误信息。

       MYSQL mysql;      //mysql连接

undefined reference to `mysql_init@4' 这样的错误。

一。 为 DEV-C 生成 libmysql.a 的过程

       //sleep(1);

二.  windows下 devc c语言访问mysql数据库 环境配置

int main()

#include <stdio.h>

  Project |‘Project Option’ | Compiler Options | Linker Sheet 在linker 一栏添上libmySQL.a 的全路径

       scanf("%d",&t);

  这样在 xxx.cpp文件中才可以包含 #include "mysql.h"。

       t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

       mysql_init(&mysql);

       {

       if(t)

    C:Program FilesMySQLmysql-5.1.38-win32libopt

     C:Program FilesMySQLmysql-5.1.38-win32include

       }else

使用的命令是:

#include <windows.h>

       return 0;

e) Tools---Compiler Options---Directories---Libraries 下添加

       int t,r;

d) 在 Project |‘Project Option’ | Directories | Include Directories 下添加

           printf("[%s] 构建成功 n",query);

#include <cstdlib>

#include <stdlib.h>

       }

   C:Program FilesDEV-CPPLiblibws2_32.a (据网上文章说 同目录下的文件 libwsock32.a 是旧版,因此应用libws2_32.a)

#include <iostream>

          printf( "Error connecting to database%sn",mysql_error(&mysql));

TAG标签:
版权声明:本文由澳门新葡8455手机版发布于www.2527.com,转载请注明出处:C语言连接MySql数据库,情状布置