C语言写数据库(二)
简单的实现增删查改的操作后,实现了一个先读写其中一个表的某两项内容,再把相关字符段写入到另外一张表中去。涉及到查询和插入两个步骤。
其中还涉及到汉字的读写和插入,会有字符的操作产生乱码。所以要先保证mysql的汉字字符编码,linux终端字符编码都是统一的。
/*** QueryAndInsert ***/ #include<stdio.h> #include<string.h> #include<stdlib.h> #include"mysql.h" int main() { printf("version = 1.0\n"); MYSQL mysql; MYSQL_RES * res; MYSQL_ROW row; int r; char* query; char taskID[256],taskName[256]; char insert[256]; int flag; mysql_init(&mysql); //mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gdk"); if(!mysql_real_connect(&mysql,"localhost","root","mysql123","csql",0,NULL,0)) { printf("Can't connect the mysql ! errInfo = [ %s ] ",mysql_error(&mysql)); } else { //query part printf("connect the mysql successfully! \n"); query = "select taskID,taskName from task where taskState=4 order by taskLastEditTime desc"; mysql_query(&mysql, "set names utf8"); flag = mysql_real_query(&mysql,query,(unsigned int )strlen(query)); if(flag) { printf("query failed\n"); return 0; } else { printf("[%s] made....\n",query); res = mysql_store_result(&mysql); while(row = mysql_fetch_row(res)) { sprintf(taskID,"%s",row[0]); sprintf(taskName,"%s",row[1]); } } } printf("taskID = %s, taskName = %s\n",taskID,taskName); sprintf(insert,"insert into EnvironmentRealData (TaskID,taskName) values(\'%s\',\'%s\');",taskID,taskName); printf("insert = %s\n",insert);
//insert if(mysql_real_query(&mysql,insert,(unsigned int)strlen(insert))) { printf("insert data is faile\n"); return 0; } else { printf("Insert successfully\n"); } mysql_close(&mysql); return 0; }
gcc编译:gcc QueryAndInsert.c -o QueryAndInsert -I /usr/inlcude/mysql -L /usr/lib/mysql -lmysqlclient
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)