zoukankan      html  css  js  c++  java
  • linux下搭建mysql服务器和c编程运用mysql数据库实例

    mysql官网:链接
    终端下载命令:

    sudo apt-get install mysql-server mysql-client
    
    


    中途需要输入Y;用户名和密码,要记得以后连接数据库都要用。

    $ sudo netstat -an |grep mysql   //查看mysql状态
    $ sudo apt install libmysqlclient-dev   //安装链接库
    $ mysql -u root -p    //进入mysql数据库
    编译命令:
    $ gcc -I /usr/include/mysql main.c -L /usr/lib/mysql -lmysqlclient -o main.o
    $ ./main.o
    
    

    查看是否下载完成:

    navicat设置:

    应用编程实例:(查看数据库)

    #include <stdio.h>
    #include <string.h>
    #include <mysql.h>
    int main(void)
    {
        MYSQL com_mysql;//声明一个数据库连接句柄
        char sqlcommand[100];
        MYSQL_RES *pRes;
        MYSQL_ROW hs;
    //MYSQL *mysql_init(MYSQL *mysql)
        if(mysql_init(&com_mysql)==NULL)
        {
                printf("Cannot init mysql!
    ");
                return 0;
        }
        if(mysql_real_connect(&com_mysql,"你的ip数据库地址","数据库用户名",
                              "链接密码","要执行的数据库名字",0,NULL,0)==NULL)
        {
            printf("%s
    ",mysql_error(&com_mysql));
            return 0;
        }
    //    sprintf(sqlcommand,"insert  into  student values( 88,40,'Mr Liu')");
    //    if(mysql_query(&com_mysql,sqlcommand)!=0)
    //    {
    //        printf("%s
    ",mysql_error(&com_mysql));
    //        return 0;
    //    }
        sprintf(sqlcommand,"select *  from 要查找的表格");
        if(mysql_query(&com_mysql,sqlcommand)!=0)
        {
            printf("%s
    ",mysql_error(&com_mysql));
            return 0;
        }
        if((pRes=mysql_store_result(&com_mysql))==NULL)
        {
            printf("%s
    ",mysql_error(&com_mysql));
            return 0;
        }
        while(hs=mysql_fetch_row(pRes))
        {
            //printf("id=%d,age=%d,name=%s
    ",hs[0],hs[1],hs[2]);//错:因为mysql_fetch_row已经把字段值转换为字符串了
            printf("id=%s,age=%s,name=%s
    ",hs[0],hs[1],hs[2]);
        }
        mysql_free_result(pRes);
        mysql_close(&com_mysql);
        return 0;
    }
    
    

    执行效果:

    常用api

     mysql_store_result  mysql_free_result   mysql_fetch_row
    fgets   
    myql_error 
    mysql_init
    mysql_real_connect
    mysql_query
    mysql_store_result
    mysql_fetch_row
    mysql_free_result
    mysql_close
    函数
    mysql_affected_rows():返回上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。
    mysql_autocommit():切换 autocommit模式,ON/OFF
    mysql_change_user():更改打开连接上的用户和数据库。
    mysql_charset_name():返回用于连接的默认字符集的名称。
    mysql_close():关闭服务器连接。
    mysql_commit():提交事务。
    mysql_connect():连接到MySQL服务器。该函数已不再被重视,使用mysql_real_connect():取代。
    mysql_create_db():创建数据库。该函数已不再被重视,使用SQL语句CREATE DATABASE取而代之。
    mysql_data_seek():在查询结果集中查找属性行编号。
    mysql_debug():用给定的字符串执行DBUG_PUSH。
    mysql_drop_db():撤销数据库。该函数已不再被重视,使用SQL语句DROP DATABASE取而代之。
    mysql_dump_debug_info():让服务器将调试信息写入日志。
    mysql_eof():确定是否读取了结果集的最后一行。该函数已不再被重视,可以使用mysql_errno()mysql_error()取而代之。
    mysql_errno():返回上次调用的MySQL函数的错误编号。
    mysql_error():返回上次调用的MySQL函数的错误消息。
    mysql_escape_string():为了用在SQL语句中,对特殊字符进行转义处理。
    mysql_fetch_field():返回下一个表字段的类型。
    mysql_fetch_field_direct()
    给定字段编号,返回表字段的类型。
    mysql_fetch_fields():返回所有字段结构的数组。
    mysql_fetch_lengths():返回当前行中所有列的长度。
    mysql_fetch_row():从结果集中获取下一行
    mysql_field_seek():将列光标置于指定的列。
    mysql_field_count():返回上次执行语句的结果列的数目。
    mysql_field_tell():返回上次mysql_fetch_field()所使用字段光标的位置。
    mysql_free_result():释放结果集使用的内存。
    mysql_get_client_info():以字符串形式返回客户端版本信息。
    mysql_get_client_version():以整数形式返回客户端版本信息。
    mysql_get_host_info():返回描述连接的字符串。
    mysql_get_server_version():以整数形式返回服务器的版本号。
    mysql_get_proto_info():返回连接所使用的协议版本。
    mysql_get_server_info():返回服务器的版本号。
    mysql_info():返回关于最近所执行查询的信息。
    mysql_init():获取或初始化MYSQL结构。
    mysql_insert_id():返回上一个查询为AUTO_INCREMENT列生成的ID。
    mysql_kill():杀死给定的线程。
    mysql_library_end():最终确定MySQL C API库。
    mysql_library_init():初始化MySQL C API库。
    mysql_list_dbs():返回与简单正则表达式匹配的数据库名称。
    mysql_list_fields():返回与简单正则表达式匹配的字段名称。
    mysql_list_processes():返回当前服务器线程的列表。
    mysql_list_tables():返回与简单正则表达式匹配的表名。
    mysql_more_results():检查是否还存在其他结果。
    mysql_next_result():在多语句执行过程中返回/初始化下一个结果。
    mysql_num_fields():返回结果集中的列数。
    mysql_num_rows():返回结果集中的行数。
    mysql_options():为mysql_connect()设置连接选项。
    mysql_ping():检查与服务器的连接是否工作,如有必要重新连接。
    mysql_query():执行指定为“以Null终结的字符串”的SQL查询。
    mysql_real_connect():连接到MySQL服务器。
    mysql_real_escape_string():考虑到连接的当前字符集,为了在SQL语句中使用,对字符串中的特殊字符进行转义处理。
    mysql_real_query():执行指定为计数字符串的SQL查询。
    mysql_refresh():刷新或复位表和高速缓冲。
    mysql_reload():通知服务器再次加载授权表。
    mysql_rollback():回滚事务。
    mysql_row_seek():使用从mysql_row_tell()返回的值,查找结果集中的行偏移。
    mysql_row_tell():返回行光标位置。
    mysql_select_db():选择数据库。
    mysql_server_end():最终确定嵌入式服务器库。
    mysql_server_init():初始化嵌入式服务器库。
    mysql_set_server_option():为连接设置选项(如多语句)。
    mysql_sqlstate():返回关于上一个错误的SQLSTATE错误代码。
    mysql_shutdown():关闭数据库服务器。
    mysql_stat():以字符串形式返回服务器状态。
    mysql_store_result():检索完整的结果集至客户端。
    mysql_thread_id():返回当前线程ID。
    mysql_thread_safe():如果客户端已编译为线程安全的,返回1mysql_use_result():初始化逐行的结果集检索。
    mysql_warning_count():返回上一个SQL语句的告警数。
    
    

    (1)MYSQL
    表示对一个数据库的连接句柄;
    (2)MYSQL_RES
    个结构代表返回行的一个查询的(SELECT, SHOW, DESCRIBE, EXPLAIN)的结果。返回的数据称为“数据集”,用过数据库的应该对数据库中查询后得到的结果集不会陌生,在C的API里对应的就是MYSQL_RES了,从数据库读取数据,最后就是从MYSQL_RES中读取数据。
    (3)MYSQL_ROW
    这是一个行数据的类型安全(type-safe)的表示。当前它实现为一个计数字节的字符串数组。(如果字段值可能包含二进制数据,你不能将这些视为空终止串,因为这样的值可以在内部包含空字节) 行通过调用mysql_fetch_row()获得。

    参考博文:链接

    一键三连呀!
  • 相关阅读:
    spring揭秘 读书笔记 六 bean的一生
    分枝限界算法
    libLAS1.8.0 编译和配置(VS2013+Win7 64)(一)
    Unity学习笔记 之 发射小球碰撞物体的代码记录
    hdu1281 棋盘游戏 --- 最大匹配
    javascript设计模式
    3、Android中Activity的跳转
    2.11 确定运行计划
    php扩展之 pdo_mysql.so
    POJ 1061 青蛙的约会(扩展欧几里得)
  • 原文地址:https://www.cnblogs.com/jee-cai/p/14095369.html
Copyright © 2011-2022 走看看