在linux下用C语言访问、操作mysql数据库.doc_第1页
在linux下用C语言访问、操作mysql数据库.doc_第2页
在linux下用C语言访问、操作mysql数据库.doc_第3页
在linux下用C语言访问、操作mysql数据库.doc_第4页
全文预览已结束

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MySQL中文参考手册/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 szSqlText500= ; 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( Cant 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( Cant 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 j ; k+ ) /输出各字段的值 printf( Fld #%d (%s): %sn , k + 1, aszFlds k , (rowk=NULL) (!strlen(rowk)? NULL :rowk) ; puts( =n ) ; mysql_free_result( res ) ; else /连接数据库出错 err_info( Cant connect to the mysql server ) ; mysql_close( myData ) ; return FALSE ; mysql_close( myData ) ; return TRUE ; - 对其中几个函数作简单说明,详细说明,可参考MySQL文档: - 1. MYSQL *mysql_init(MYSQL *mysql) - 初始化一个类型为MYSQL的数据结构,为执行mysql_real_connect()做准备。参数 mysql为指向该结构的指针,如果mysql为NULL,则新建并初始化一个MYSQL的数据结构。 新建的结构将在mysql_close()中释放。 - 若成功,返回初始化的MYSQL数据结构的指针,否则返回NULL。 - 2. MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, - const char *user, const char *passwd, const char *db, - unsigned int port, const char *unix_socket, unsigned int client_flag) - 与MySQL数据库引擎建立连接。在执行进一步的数据操作之前,必须保证mysql_re al_connect()成功返回。 - 参数mysql是mysql_init()的返回值; - 参数host是运行MySQL数据库引擎的机器的TCP/IP主机名,如为NULL则默认为“lo calhost”; - 参数user和passwd是MySQL数据库的合法用户和口令; - 参数db是连接的数据库名; - 参数port,unix_socket和client_flag一般取默认值。 - 3. int mysql_query(MYSQL *mysql, const char *query) - 执行query字符串中的SQL语句,query必须以0结尾。如果成功,返回0。 - 4. MYSQL_RES *mysql_store_result(MYSQL *mysql) - 返回SELECT,SHOW,DESCRIBE, EXPLAIN等语句执行的结果。函数新建一个MYSQL_ RES的数据结构,把结果存储在该结构中。如果查询没有匹配的结果,则返回空数据集。 处理完结果集后,必须调用mysql_free_result()。 - 如果出错,返回NULL,否则返回MYSQL_RES结构的指针。 - 5. MYSQL_ROW mysql_fetch_row(MYSQL_RES *result) - 取回结果集中的下一条记录,如果没有记录或出错,返回NULL。一条记录中的字段 数可以用mysq

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论