当前位置:Gxlcms > 数据库问题 > 【Linux】Ubuntu下C语言访问MySQL数据库入门

【Linux】Ubuntu下C语言访问MySQL数据库入门

时间:2021-07-01 10:21:17 帮助过:3人阅读

  •     fname varchar(30),  
  •     age int(11),  
  •     PRIMARY KEY (childno)  
  •     );  
  •   
  • INSERT INTO children(childno,fname,age) VALUES(1,‘Jenny‘,21);  
  • INSERT INTO children(childno,fname,age) VALUES(2,‘Andrew‘,17);  
  • INSERT INTO children(childno,fname,age) VALUES(3,‘Gavin‘,8);  
  • INSERT INTO children(childno,fname,age) VALUES(4,‘Duncan‘,6);  
  • INSERT INTO children(childno,fname,age) VALUES(5,‘Emma‘,4);  
  • INSERT INTO children(childno,fname,age) VALUES(6,‘Alex‘,15);  
  • INSERT INTO children(childno,fname,age) VALUES(7,‘Adrian‘,9);  

  • 在MySQL命令行模式中执行方法如下:

     

    技术分享

     

    MySQL数据库连接测试

     

    然后采用如下C语言进行数据库连接测试connect1.c:

     

    [cpp] view plaincopyprint?  
    1. #include <stdlib.h>  
    2. #include <stdio.h>  
    3.   
    4. #include "mysql.h"  
    5.   
    6. int main(int argc,char *argv[])  
    7. {  
    8.   MYSQL *conn_ptr;  
    9.   conn_ptr = mysql_init(NULL);  
    10.   
    11.   if(!conn_ptr)  
    12.   {  
    13.     fprintf(stderr,"mysql_init failed\n");  
    14.     return EXIT_FAILURE;  
    15.   }  
    16.   
    17.   conn_ptr = mysql_real_connect(conn_ptr,"localhost","rick","rick","foo",0,NULL,0);  
    18.   
    19.   if(conn_ptr)  
    20.     printf("Connection success\n");  
    21.   else  
    22.     printf("Connection failed\n");  
    23.   
    24.   mysql_close(conn_ptr);  
    25.   
    26.   return EXIT_SUCCESS;  
    27. }  

    执行结果:

     

    技术分享

    注意的是:需要指定include库和库文件的路径名,以及指定链接的库模块mysqlclient。

    如果不在开始的时候安装开发包,就会产生如下错误:

    技术分享

     

    执行SQL语句进行数据操作

    向数据库表children中插入一行:

     

    [cpp] view plaincopyprint?  
    1. #include <stdlib.h>  
    2. #include <stdio.h>  
    3.   
    4. #include "mysql.h"  
    5.   
    6. int main()  
    7. {  
    8.   MYSQL my_connecyion;  
    9.   int res;  
    10.   
    11.   mysql_init(&my_connecyion);  
    12.   
    13.   if(mysql_real_connect(&my_connecyion,"localhost","rick","rick","foo",0,NULL,0))  
    14.   {  
    15.     printf("Connection success\n");  
    16.   
    17.     //执行SQL语句  
    18.     res = mysql_query(&my_connecyion,"INSERT INTO children(fname,age) VALUES(‘Ann‘,3)");  
    19.   
    20.     if(!res)  
    21.       printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connecyion));  
    22.     else  
    23.       fprintf(stderr,"Insert error %d : %s \n",mysql_errno(&my_connecyion),mysql_error(&my_connecyion));  
    24.   
    25.     mysql_close(&my_connecyion);  
    26.   }  
    27.   else{  
    28.     fprintf(stderr,"Connection failed\n");  
    29.     if(mysql_errno(&my_connecyion))  
    30.       fprintf(stderr,"Connection error %d : %s\n",mysql_errno(&my_connecyion),mysql_error(&my_connecyion));  
    31.   }  
    32.   
    33.   return EXIT_SUCCESS;  
    34. }  


    运行结果:

     

    技术分享

    技术分享

     

    在这里特别需要注意的是:

    函数mysql_affected_rows返回的是被一个更新操作修改的行数,而不是满足where子句的行数。

    【Linux】Ubuntu下C语言访问MySQL数据库入门

    标签:

    人气教程排行