当前位置: 技术问答>linux和unix
在linux下用C语言访问、操作mysql数据库(高分悬赏热心人!!!)
来源: 互联网 发布时间:2015-05-19
本文导语: 我现在想在linux下用C语言访问和操作、管理mysql数据库,希望高手给我一点方法, 有源码更好,email:dchg2000@263.net ,有相关网站和书籍也可以推荐,谢谢大家的关注,共同进步!!! | MySQL中文参考手...
我现在想在linux下用C语言访问和操作、管理mysql数据库,希望高手给我一点方法,
有源码更好,email:dchg2000@263.net ,有相关网站和书籍也可以推荐,谢谢大家的关注,共同进步!!!
有源码更好,email:dchg2000@263.net ,有相关网站和书籍也可以推荐,谢谢大家的关注,共同进步!!!
|
MySQL中文参考手册http://www.chinalinuxpub.com/doc/database/mysql_manual/manual_toc.html
三、MySQL客户端应用的开发
确认MYSQL服务器已经启动
采用了MySQL的C API进行开发。
创建文件testmysql.c
#include
#include
#include
#include
typedef int BOOL;
enum { FALSE = 0, TRUE = 1 };
#define err_info(s) (printf("ERR:[F:%s L:%d FUN:%s] %sn",__FILE__,__LINE__,__FUNCTION__,s));
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 = FALSE;
if ( (myData = mysql_init((MYSQL*) 0))
//初始化数据结构
&& mysql_real_connect( myData, NULL,
//连接数据库
"root", " your_password ", szTargetDSN,
MYSQL_PORT, NULL, 0 ) )
{
if(bCreate)
{
sprintf(szSqlText, //构造SQL语句
"create table mytable "
//新建一张表
"(time datetime, s1 char(6), "
"s2 char(11), s3 int, s4 int)");
if (mysql_query( myData, szSqlText))
//执行SQL语句
{//执行SQL语句出错
err_info( "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语句出错
err_info( "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: %sn%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