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 ;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值