您现在的位置是:首页 > 正文

linux mysql 代码_linux c MySQL代码(参考)

2024-04-01 01:20:53阅读 2

Linux下c链接MySQL数据库添删改查

1.[代码]Linux下c链接MySQL数据库添删改查

#include

#include

#include

#include //包含MySQL头文件

#include

#include

#include

void connect_mysql(MYSQL * mysql ,char * str[],MYSQL **connect);

void insert_mysql(MYSQL * mysql);

void delete_mysql(MYSQL * mysql);

void update_mysql(MYSQL * mysql);

void select_mysql(MYSQL * mysql,MYSQL **connect);

void show_table(MYSQL * mysql,MYSQL **connect);

void set_char(MYSQL * mysql);

void menu();

void quit(MYSQL **connect);

int main(int argc,char *argv[])

{

MYSQL mysql, *connect = NULL;

char *str[] = {argv[1],argv[2],argv[3]};

connect_mysql(&mysql,str,&connect);

menu();

quit(&connect);

return 0;

}

void set_char(MYSQL *mysql)//设置数据库的字符集 要先做

{

int i = mysql_query(mysql,"set names utf8");//向mysql服务器端发送指令

//成功则返回0,失败则返回非0数据

if(i != 0)

{

printf("set char fail!!\n");

return;

}

}

void select_mysql(MYSQL *mysql,MYSQL **connect)

{

if(!mysql)

return;

else{

write(1,"Input select SQL:\n",strlen("Input select SQL:\n"));

char select_sql[256];

int n=0;

memset(select_sql,0,sizeof(select_sql));

for(n;;n++)//读取标准输入直到;在去除;

{

select_sql[n]=getchar();

if(select_sql[n] == ';')

{

select_sql[n]=0;

break;

}

}

char * SQL = select_sql;

int i = mysql_query(mysql,SQL);

if(i != 0 )

{

printf("Update SQL fail %s \n",mysql_error(mysql));

return;

}else

printf("Update SQL success\n");

}

MYSQL_RES *res = mysql_store_result(mysql);//返回结果集放入MYSQL_RES中

int num_fields = mysql_num_fields(res);//查看结果集中行数

MYSQL_ROW row;

while((row = mysql_fetch_row(res)))//检索一个结果集合的下一行。当在mysql_store_result()之后使用时,

//没有更多的行可检索时,mysql_etch_row()返回NULL

{

int i;

for(i=0;i

{

printf("%s\n",row[i]);

}

}

mysql_free_result(res);//必须清空结果集########

}

void show_table(MYSQL *mysql,MYSQL **connect)

{

int i = mysql_query(mysql,"show tables");

if(i != 0)

return;

else{

MYSQL_RES * result = mysql_store_result(*connect);

int num_fields = mysql_num_fields(result);

MYSQL_ROW row;

while((row = mysql_fetch_row(result)))

{

int i;

for(i=0;i

{

char *SQL;

sprintf(SQL,"desc %s",row[i]);

int n = mysql_query(mysql,SQL);

MYSQL_RES * res= mysql_store_result(*connect);

//可以调用mysql_fetch_row()来获取结果集中的行,或调用mysql_row_seek()

//和mysql_row_tell()来获取或设置结果集中的当前行位置。

//一旦完成了对结果集的操作,必须调用mysql_free_result()。

int table_num = mysql_num_fields(res);

MYSQL_ROW row1;

while((row1 = mysql_fetch_row(res)))

{

int j;

for(j=0;j

{

printf("%s\n",row1[j]);

}

}

mysql_free_result(res);

}

}

mysql_free_result(result);

}

}

void update_mysql(MYSQL *mysql)

{

if(!mysql)

return;

else{

write(1,"Input update SQL:\n",strlen("Input update SQL:\n"));

char update_sql[256];

int n=0;

memset(update_sql,0,sizeof(update_sql));

for(n;;n++)

{

update_sql[n]=getchar();

if(update_sql[n] == ';')

{

update_sql[n]=0;

break;

}

}

char * SQL = update_sql;

int i = mysql_query(mysql,SQL);

if(i != 0 )

{

printf("Update SQL fail %s \n",mysql_error(mysql));

return;

}else

printf("Update SQL success\n");

}

}

void delete_mysql(MYSQL *mysql)

{

if(!mysql)

return;

else{

write(1,"Input delete SQL:\n",strlen("Input delete SQL:\n"));

char delete_sql[256];

int n=0;

memset(delete_sql,0,sizeof(delete_sql));

for(n;;n++)

{

delete_sql[n]=getchar();

if(delete_sql[n] == ';')

{

delete_sql[n]=0;

break;

}

}

char * SQL = delete_sql;

int i = mysql_query(mysql,SQL);

if(i != 0 )

{

printf("Delete SQL fail %s \n",mysql_error(mysql));

return;

}else

printf("Delete SQL success\n");

}

}

void insert_mysql(MYSQL *mysql)

{

if(!mysql)

return;

else{

write(1,"Input insert SQL:\n",strlen("Input insert SQL:\n"));

char insert_sql[256];

int n=0;

memset(insert_sql,0,sizeof(insert_sql));

for(n;;n++)

{

insert_sql[n]=getchar();

if(insert_sql[n] == ';')

{

insert_sql[n]=0;

break;

}

}

char * SQL = insert_sql;

int i = mysql_query(mysql,SQL);

if(i != 0 )

{

printf("Insert SQL fail %s \n",mysql_error(mysql));

return;

}else

printf("Insert SQL success\n");

}

}

void connect_mysql(MYSQL *mysql,char *str[],MYSQL **connect)

{

char passwd[256];

memset(passwd,0,sizeof(passwd));

write(1,"passwd:",strlen("passwd:"));

scanf("%s",passwd);

passwd[strlen(passwd)]=0;

mysql_init(mysql);

*connect = mysql_real_connect(mysql,str[1],str[2],passwd,str[3],0,0,0);

if(*connect == NULL)

{

printf("Connect database fail! %s\n",mysql_error(mysql));

return;

}else{

printf("Connect success!\n");

}

}

void quit(MYSQL **connect)

{

mysql_close(*connect);

*connect = NULL;

printf("Bye\n");

exit(1);

}

void menu()

{

printf("###########################\n");

printf(" A -> SELECT:\n");

printf(" B -> UPDATE:\n");

printf(" C -> DELETE:\n");

printf(" D -> INSERT:\n");

printf(" E -> DESC TABLE:\n");

printf(" Q -> QUIT:\n");

printf("###########################\n");

write(1,"Input: ",strlen("Input: "));

}

网站文章

  • PHP中String类型

    1.字符串类型分为单引号字符串,双引号字符串。 单引号字符串是真正的字符串,会原样输出。双引号字符串会解析变量。那么单引号字符串执行效率更高。 如果字符串中有单引号,则需要转义,用反斜线(\),如:借用下博友代码: $var_char = '字符串中包含\'需要转义'; echo $var_char; //输出:字符串中包含'需要转义 ?> 如果在字符串

    2024-04-01 01:20:28
  • 即插即用 | ORCTrack:有效解决DeepSORT等方法的遮挡问题!

    即插即用 | ORCTrack:有效解决DeepSORT等方法的遮挡问题!

    作者|AI视界引擎 编辑| 集智书童点击下方卡片,关注“自动驾驶之心”公众号ADAS巨卷干货,即可获取点击进入→自动驾驶之心【目标跟踪】技术交流群本文只做学术分享,如有侵权,联系删文多目标跟踪(Multi-Object Tracking,MOT)是计算机视觉领域中一项关键任务,旨在同时预测目标的边界框和身份。尽管最先进的方法通过共同优化检测和ReID特征学习的多任务问题取得了显著进展,但鲜...

    2024-04-01 01:20:21
  • 计算机四级网络工程师科目代号,2017计算机四级网络工程师基础训练题

    计算机四级网络工程师科目代号,2017计算机四级网络工程师基础训练题

    2017计算机四级网络工程师基础训练题为了大家能够对《网络工程师》科目有一个系统的复习,下面百分网小编就收集整理了以下2017计算机四级网络工程师基础训练题,希望对您的学习有所帮助!一、分析题1.阅读...

    2024-04-01 01:20:13
  • 第三方库的安装:Pangolin - _Mr_y - 博客园

    第三方库的安装:Pangolin - _Mr_y - 博客园

    2024-04-01 01:19:46
  • Linux定时备份MySQL数据库 最新发布

    Linux定时备份MySQL数据库

    2024-04-01 01:19:37
  • 小程序开发

    小程序开发

    小程序开发

    2024-04-01 01:19:30
  • 动画演示:深浅拷贝

    点击播放

    2024-04-01 01:19:07
  • Python函数编程

    一 函数的介绍和基本使用为什么要使用函数?避免代码重用提高代码的可读性函数的定义与调用 def 函数名(参数1,参数2)     ''' 函数注释'''     print('函数体')     return 返回值 定义:def关键字开头,空格之后接函数名和圆括号,最后还要加一个冒号。函数名:函数名是包含字母,数字,下划线的任意组合,但是不能以数字开头。...

    2024-04-01 01:18:59
  • 【JVM】Java对象的创建过程

    【JVM】Java对象的创建过程

    1 类加载检查 虚拟机遇到new指令时,会去常量池中检查是否有这个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析、初始化。 2 分配内存 对象所需内存大小在类加载完成后即可确定,从Java...

    2024-04-01 01:18:52
  • 01-class文件结构

    01-class文件结构

    1. Class文件是什么?Java虚拟机不与任何程序语言绑定。只与“Class文件”这种二进制文件格式关联除Java外,Kotlin、JRuby、JPython、Scala都可以编译出Class文件...

    2024-04-01 01:18:43