wxwidget下连接mysql

来源:互联网 发布:西安java工程师招聘 编辑:程序博客网 时间:2024/06/07 04:37

1.因为DEV-C++ 使用的编译器是gcc, 而MySQL自带的libmysql.dll只支持Visual Stdio。为此,需要从libmysql.dll 生成libmysql.a(静态库)。

使用的命令是:

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

生成后放到C:\Program Files\Dev-Cpp\lib下 ,即C:\Program Files\Dev-Cpp\lib\libmySQL.a

2.环境配置:

Tools---CompilerOptions---Directories---Libraries 下添加

C:\Program Files\Dev-Cpp\lib

C:\ProgramFiles\Dev-Cpp\lib\wx\gcc_lib

C:\Program Files\Dev-Cpp\MinGW32\lib

 

Tools---CompilerOptions---Directories---C includes (C++ Includes)下添加

C:\Program Files\Dev-Cpp\include\

C:\ProgramFiles\Dev-Cpp\include\common

C:\ProgramFiles\Dev-Cpp\MinGW32\include

 

Tools---Compiler Options---Compile下第二空行添加:

-lmySQL  (即C:\ProgramFiles\Dev-Cpp\lib\libmySQL.a)

或在Projectoption 同样配置

 

 

 

 

编译输出:

-L表示路径

-l(小L)表示库名,如:libmySQL.a 为-lmySQL

g++.exe"Objects/MingW/main.o" -o "Output/MingW/MYSQL.exe"-L"C:/Program Files/Dev-Cpp/lib/wx/gcc_lib" -L"C:/ProgramFiles/Dev-Cpp/lib" -L"C:/Program Files/Dev-Cpp/MinGW32/lib"-lmySQL -L"C:/Program Files/Dev-Cpp/lib/" -L"C:/ProgramFiles/Dev-Cpp/lib/wx/gcc_lib"  -g3 

 

4.测试

/*
  Name:         MySQLClientTest
  Author:       Kip Warner (kip@zero47.com)
  Date:         24/11/03 13:15
  Description:  Example to show usage of MySQL databases from clientend.
               I did not have much time. Sorry...


// Includes...
#include <windows.h>
#include <MySQL\mysql.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

// Database name...
char       g_szHost[]          ="127.0.0.1";
UINT       g_unPort            =MYSQL_PORT;
char       g_szUserName[]      = "jimmy";
char       g_szPassword[]      = "jimmy";
char       g_szDatabase[]      = "hibernate";
char        g_szSQLStatement[]  ="SELECT * from  users";

// Entry point...
int main(int nArguments, char *pszArguments[])
{
    // Variables...
    MYSQL         *myDatabase      = NULL;
    MYSQL_RES      *myResult        = NULL;
    MYSQL_FIELD      *myField         = NULL;
    MYSQL_ROW       myRow           = NULL;
   UINT           unRecords       = 0;
    UINT           unFields        = 0;
   UINT           unIndex         = 0;
   UINT           unFieldIndex    = 0;
 
    // Initialize MySQL...
    myDatabase = mysql_init(NULL);
    
        // Failed...
        if(!myDatabase)
        {
            // Alertuser...
           printf("] Error: Unable to initialize MySQL API...\n");

            // Cleanup,abort, terminate...
           mysql_close(myDatabase);
            getch();
            return 0;
        }

    // Connect to server and check for error...
    if(mysql_real_connect(myDatabase, g_szHost, g_szUserName,g_szPassword,
                         NULL, g_unPort, NULL, 0) != 0)
    {
        // Alert user...
        printf("] Error: Unable toconnect to server...\n");

        // Cleanup, abort, terminate...
        mysql_close(myDatabase);
        getch();
        return 0;
    }

    // Select database in server and check for error...
    if(mysql_select_db(myDatabase, g_szDatabase) < 0)
    {
        // Alert user...
        printf("] Error: Unable toselect database...\n");
        
        // Cleanup, abort, terminate...
        mysql_close(myDatabase);
        getch();
        return 0;
    }

    // Query database and check for error...
    if(mysql_query(myDatabase, g_szSQLStatement) != 0)
    {
        // Alert user...
        printf("] Error: Unable toexecute query...\n");
        
        // Cleanup, abort, terminate...
        mysql_close(myDatabase);
        getch();
        return 0;
    }

    // Retrieve query result from server...
    myResult = mysql_store_result(myDatabase);
    
        // Failed...
        if(!myResult)
        {
            // Alertuser...
           printf("] Error: Unable to retrieve result...\n");
            
            // Cleanup,abort, terminate...
           mysql_close(myDatabase);
            getch();
            return0;        
        }
 
    // How many records were returned in the result set?
    
        // Calculate...
        unRecords =mysql_num_rows(myResult);
    
        // Alert user...
        printf("] Query: %d recordsfound...\n", unRecords);
    
    // How many fields are present in a record?
        
        // Calculate...
        unFields =mysql_num_fields(myResult);
        
        // Alert user...
        printf("] Query: There are %dfields in each record...", unFields);
    
    // Output records...
    for(unIndex = 0; unIndex < unRecords; unIndex++)
    {
        // Fetch row from results...
        myRow = mysql_fetch_row(myResult);

        // Fetch fields from row...
        myField =mysql_fetch_fields(myResult);

        // Show record...
        printf("] Record: %d /%d\n", unIndex, unRecords);

        // Output all fields in this row...
        for(unFieldIndex = 0; unFieldIndex< unFields; unFieldIndex++)
        {
            // Output...
           printf("\t%s", myField[unFieldIndex].name);
        }
    }
    
    // Free result...
    mysql_free_result(myResult);
    
    // Close server connection...
    mysql_close(myDatabase);
    myDatabase = NULL;
    
    // Alert user, exit...
    printf("] Done, press any key to exit...\n");
    getch();
    return 0;
}
*/
#include <cstdlib>
#include <iostream>
using namespace std;
#include <windows.h>
#include <MySQL\mysql.h>
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
#include <stdlib.h>

#include <conio.h>
/*
int main()
{
  WSADATA wsadata;
  WSAStartup(0x101, (LPWSADATA)& wsadata);
  system("PAUSE");
  return 0;
}
*/
int main()
{
       MYSQL * mysql=NULL;    
       MYSQL_RES *res;
       MYSQL_ROW row;
       char *query;
       int t,r;
      mysql= mysql_init(NULL);
       // Failed...
        if(!mysql)
        {
            // Alertuser...
           printf("] Error: Unable to initialize MySQL API...\n");

            // Cleanup,abort, terminate...
           mysql_close(mysql);
            getch();
            return 0;
        }
       if(!mysql_real_connect(mysql,"localhost", "root","123456", "hibernate",3306,NULL,0))
       {
          printf( "Errorconnecting to database%s\n",mysql_error(mysql));
       } else
         printf("Connected...\n");
      
      
       query=" select * from users ";
       t=mysql_real_query(mysql,query,(unsignedint)strlen(query));
       if(t)
       {
           printf("errr:%s",mysql_error(mysql));
       }else
           printf("[%s]query\n",query);
       res=mysql_store_result(mysql);
       while(row=mysql_fetch_row(res))
      {                         
            for(t=0;t<mysql_num_fields(res);t++)
            {
               printf("%s:   ",row[t]);
            }
           printf("\n");
       }
       mysql_free_result(res);
       //sleep(1);
       scanf("%d",&t);
       return 0;
}

参考:

http://linux.bokee.com/6961276.html

http://kb.cnblogs.com/a/1958093/


原创粉丝点击