C语言读写mysql
程序员文章站
2022-04-15 19:29:17
创建
create database tiger;
create table `test` (
`id` int(11) not null auto_increment,...
创建
create database tiger; create table `test` ( `id` int(11) not null auto_increment, primary key (`id`) ); alter table `test` add column `name` varchar(20);
c语言读写数据库">c语言读写数据库
/* ============================================================================ name : mysqltest.c author : version : copyright : your copyright notice description : hello world in c, ansi-style ============================================================================ */ #include #include #include #include mysql *g_conn; // mysql 连接 mysql_res *g_res; // mysql 记录集 mysql_row g_row; // 字符串数组,mysql 记录行 #define max_buf_size 1024 // 缓冲区最大字节数 const char *g_host_name = "127.0.0.1"; const char *g_user_name = "root"; const char *g_password = "123456"; const char *g_db_name = "tiger"; const unsigned int g_db_port = 3306; void print_mysql_error(const char *msg) { // 打印最后一次错误 if (msg) printf("%s: %s\n", msg, mysql_error(g_conn)); else puts(mysql_error(g_conn)); } int executesql(const char * sql) { /*query the database according the sql*/ if (mysql_real_query(g_conn, sql, strlen(sql))) // 如果失败 return -1; // 表示失败 return 0; // 成功执行 } int init_mysql() { // 初始化连接 // init the database connection g_conn = mysql_init(null); /* connect the database */ if(!mysql_real_connect(g_conn, g_host_name, g_user_name, g_password, g_db_name, g_db_port, null, 0)) // 如果失败 return -1; // 是否连接已经可用 if (executesql("set names utf8")) // 如果失败 return -1; return 0; // 返回成功 } int main(void) { puts("!!!hello world!!!"); /* prints !!!hello world!!! */ if (init_mysql()); print_mysql_error(null); char sql[max_buf_size]; sprintf(sql, "insert into `test`(`name`) values('testname')"); if (executesql(sql)) print_mysql_error(null); if (executesql("select * from `test`")) // 句末没有分号 print_mysql_error(null); g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集 int inum_rows = mysql_num_rows(g_res); // 得到记录的行数 int inum_fields = mysql_num_fields(g_res); // 得到记录的列数 printf("共%d个记录,每个记录%d字段\n", inum_rows, inum_fields); puts("id\tname\n"); while ((g_row=mysql_fetch_row(g_res))) // 打印结果集 printf("%s\t%s\n", g_row[0], g_row[1]); // 第一,第二字段 mysql_free_result(g_res); // 释放结果集 mysql_close(g_conn); // 关闭链接 return exit_success; }
编译
需要安装mysql,并在编译的时候指定mysqlclient头文件,库的目录
gcc -l mysqlclient -i /usr/local/mysql/include/ -l /usr/local/mysql/lib/ mysqltest.c
运行
需要在/usr/lib/目录下创建 /usr/lib/libmysqlclient.so.18 -> /usr/local/mysql/lib/libmysqlclient.so.18 的软链接
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
上一篇: ios开发是否需要合成支持模拟器和真机架构的静态库
下一篇: 数据结构c语言链队