c 怎么连接mysql博客_C连接MySql数据库
我用的是dev-c++ 4.9.9.2 with
Mingw/GCC 3.4.2加C語言連接mySQL
如果使用的是msvc的編譯器,那么使用的libmysql.lib是沒問題的,但是如果使用的是mingw編譯器,那就會出錯,有undefined
reference....等類錯誤字樣。這是因為mingw使用的庫和msvc使用的不同格式的庫而引起的。而mysql只提供了msvc可使用的庫。mingw要想編譯出qsqlmysql庫來,我們先得編譯出mingw需要的libmysql.a這個文件來,可以使用mingw工具來生成。
mingw-utils包里的reimp命令(如果沒有這個命令的話,可從
然后運行:
cd c:\mysql\lib\opt?//進入c:\mysql\lib\opt
c:\mysql\lib\opt> c:\dev-c++\mingw32\bin\reimp
-d?libmysql.lib
此時在c:\mysql\lib\opt下生成了
libmysql.def文件
然后運行:
c:\mysql\lib\opt>
c:\dev-c++\mingw32\bin\dlltool -k -d libmysql.def -l
libmysql.a
一切ok!在 c:\mysql\lib\opt下生成了
libmysql.a文件
libmysql.lib文件就轉換成了libmysql.a文件,就可以應用了
記得在"工程"-->"工程屬性"-->"參數"里面,加入庫或者對象,把你生成的libmysql.a添加進去,然后編譯執行,就ok了!
下面是我從網上copy
的別人的代碼,用上面的方法,加上下面這段代碼就可以成功實現c連接mysql!代碼如下:
#include
#include
#include
#include
int main( int argc, char * argv[]
)
{
char szTargetDSN[] = "test";
char szSqlText[500]="";
char aszFlds[ 25 ][ 25 ];
MYSQL * myData ;
MYSQL_RES * res ;
MYSQL_FIELD * fd ;
MYSQL_ROW row ;
int i,j,k;
BOOL bCreate = TRUE;
//初始化數據結構,連接數據庫
if ( (myData = mysql_init((MYSQL*)
0))&& mysql_real_connect(myData, NULL,"root", "root",
szTargetDSN,MYSQL_PORT, NULL, 0 ) )
{
if(bCreate)
{
//構造SQL語句//新建一張表
sprintf(szSqlText, "create table mytable(time datetime, s1
char(6),s2 char(11), s3 int, s4 int)");
if (mysql_query( myData,
szSqlText))
//執行SQL語句
{//執行SQL語句出錯
//ErrLog( "Can't create table") ;
mysql_close( myData ) ;
return FALSE ;
}
}
//向表中插入數據//注意時間的格式
sprintf(szSqlText,"insert into mytable values('2000-3-10
21:01:30','Test','MySQLTest',2000,3)");
if (mysql_query( myData,
szSqlText))
{//執行SQL語句出錯
//ErrLog( "Can't insert data to table")
;
mysql_close( myData ) ;
return FALSE ;
}
sprintf(szSqlText, "select * from mytable
");
if (mysql_query( myData,
szSqlText))
//進行數據檢索
{
//執行SQL語句出錯
mysql_close( myData ) ;
return FALSE ;
}
else
{
res = mysql_store_result( myData )
;
//取得查詢結果
i = (int) mysql_num_rows( res ) ;
//取得有效記錄數
printf( "Query: %s\n%ld records found:\n",
szSqlText, i ) ;
for ( i = 0 ; fd = mysql_fetch_field( res );i++
)
strcpy( aszFlds[ i ], fd->name )
;
//取得各字段名
for (i=1; row = mysql_fetch_row( res );
)
//依次讀取各條記錄
{j = mysql_num_fields( res ) ;
//取得記錄中的字段數
printf( "Record #%ld:-\n", i++ ) ;
for ( k = 0 ; k < j ; k++ )
//輸出各字段的值
printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[
k ],(((row[k]==NULL)||(!strlen(row[k])))?"NULL":row[k]))
;
puts( "==============================\n" )
;
}
mysql_free_result( res ) ;
}
}
else
{//連接數據庫出錯
//ErrLog( "Can't connect to the mysql server ") ;
mysql_close( myData ) ;
return FALSE ;
}
mysql_close( myData ) ;
return TRUE ;
}
總結
以上是生活随笔為你收集整理的c 怎么连接mysql博客_C连接MySql数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 时区缩写 UTC, CST, GMT,
- 下一篇: 13.Linux文件存储系统