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()获得。

参考博文:链接

一键三连呀!
原文地址:https://www.cnblogs.com/jee-cai/p/14095369.html