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/