Mysql —— linux下使用c语言访问mySql数据库
1、联接数据库 (test需要提前创建好)
2、创建新的数据库(workdata)
3、创建user表
4、向表中插入信息 作为管理员的信息
5、使用sql语句查询表中的信息
|
/********************************************* 编译命令:gcc aa.c -lmysqlclient -o aa* 执行命令:./aa* ******************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "mysql/mysql.h"MYSQL *g_conn;//mysql 链接
MYSQL_RES *g_res;//mysql 记录集
MYSQL_ROW g_row;//字符串数组,mysql 记录行const char *g_host_name = "localhost";
const char *g_user_name = "root";
const char *g_password = "asdfgh";
const char *g_db_name = "test";
const unsigned int g_db_port = 3306;#define MAX_BUF_SIZE 1024 //缓冲区最大字节数
char sql[MAX_BUF_SIZE];
char Time[MAX_BUF_SIZE];int iNum_rows = 0;//mysql语句执行结果返回行数赋初值
int flag = 0;//管理员权限开关
int i = 1;//系统运行开关 /***************************************************** time : 20180622* addby : swj* function :print_mysql_error() 打印错误信息* ******************************************************/
void print_mysql_error(const char *msg)
{if(msg)printf("%s: %s\n",msg,mysql_error(g_conn));elseputs(mysql_error(g_conn));
}
/***************************************************** time : 20180622* addby : swj* function :executesql() 执行sql语句,成功返回0,失败返回-1 ******************************************************/
int executesql(const char * sql)
{if(mysql_real_query(g_conn,sql,strlen(sql)))return -1;return 0;
}
/***************************************************** time : 20180622* addby : swj* function :init_mysql() 初始化链接******************************************************/
int init_mysql()
{//init the database connection g_conn = mysql_init(NULL);//connection 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; //返回成功
}
/***************************************************** * time : 20180622* * addby : swj* * function :create_database() 选择数据库 没有的时候 创建数据;有的时候 进去数据* 库 * ******************************************************/
void create_database()
{sprintf(sql,"use workdata");if(executesql(sql) == -1){puts("create database");executesql("create database workdata;");print_mysql_error(NULL);puts("choice database");executesql("use workdata;");print_mysql_error(NULL);puts("!!!Initialize the success!!!");}else{executesql("use workdata;");print_mysql_error(NULL);}}
/***************************************************** * time : 20180622* * addby : swj* * function :create_table() 创建表 * ******************************************************/
void create_table()
{sprintf(sql,"show tables;");executesql(sql);g_res = mysql_store_result(g_conn);iNum_rows = mysql_num_rows(g_res);if(iNum_rows == 0){puts("create users table");executesql("create table users(id_ int(11) unsigned primary key auto_increment,name_ char(255) not null unique,password_ char(32) not null,create_time_ datetime,creator_id_ int(11) unsigned,auth_type_ int(11) not null,dyn_sn_ char(10),dyn_pass_sn_ text,remark_ varchar(200),foreign key(creator_id_) references users(id_));");}mysql_free_result(g_res);//释放结果集
}
/***************************************************** * time : 20180622* * addby : swj* * function :init_administrator() 初始化管理员账户* * 管理员用户名:root 密码:root* * ******************************************************/
void init_administrator()
{sprintf(sql,"select * from users where id_='1' and name_='root';");executesql(sql);g_res = mysql_store_result(g_conn);iNum_rows = mysql_num_rows(g_res);if(iNum_rows == 0){puts("Init Administrtor User");sprintf(sql,"insert into users values(1,'root','root','2017-08-18 12:21:11',1,0,'','','0:VIP 1:local pwd 2:local cert');");executesql(sql);}mysql_free_result(g_res);//释放结果集
}
int main(void)
{puts("!!!The system is initializing!!!");/*初始化链接*///在初始化的时候 数据库 test 是必须事先创建好的 否则会报错Unknown database 'test' if(init_mysql())print_mysql_error(NULL);//当链接数据库时候 有错误 会报错//选择数据库workdata 没有的时候 创建数据库 有的时候 进去数据库create_database(); //创建表create_table();//初始化管理员账户init_administrator();
//操作数据库 查询数据库 表中的信息if(executesql("select * from users"))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);printf("id_ | name_ |password_| create_time_ |creator_id_ | auth_type_ |dyn_sn_| dyn_pass_sn_ |remark_ \n");while ((g_row=mysql_fetch_row(g_res))) // 打印结果集printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",g_row[0],g_row[1],g_row[2],g_row[3],g_row[4],g_row[5],g_row[6],g_row[7],g_row[8]); // 第一,第二字段mysql_free_result(g_res); // 释放结果集mysql_close(g_conn);return EXIT_SUCCESS;
}
执行结果显示
|
标志名称
标志描述
CLIENT_COMPRESS
使用压缩协议。
CLIENT_FOUND_ROWS
返回发现的行数(匹配的),而不是受影响的行数。
CLIENT_IGNORE_SPACE
允许在函数名后使用空格。使所有的函数名成为保留字。
CLIENT_INTERACTIVE
关闭连接之前,允许interactive_timeout秒的不活动时间。
CLIENT_LOCAL_FILES
允许LOAD DATA LOCAL处理功能。
CLIENT_MULTI_STATEMENTS
通知服务器,客户端可能在单个字符串内发送多条语句。
CLIENT_MULTI_RESULTS
通知服务器,客户端能够处理来自多语句执行。
CLIENT_NO_SCHEMA
禁止db_name.tbl_name.col_name语法。
CLIENT_ODBC
客户端是ODBC客户端。它将mysqld变得更为ODBC友好。
CLIENT_SSL
使用SSL,该选项不应由应用程序设置,而是在客户端库内部设置。
对于某些参数,能够从选项文件获得取值,而不是取得mysql_real_connect()调用中的确切值。为此,在调用mysql_real_connect()之前,应与MYSQL_READ_DEFAULT_FILE或MYSQL_READ_DEFAULT_GROUP选项一起调用mysql_options()。随后,在mysql_real_connect()调用中,为准备从选项文件读取值的每个参数指定“无值”值:
对于host,指定NULL值或空字符串("")。
对于user,指定NULL值或空字符串。
对于passwd,指定NULL值。(对于密码,mysql_real_connect()调用中的空字符串的值不能被选项文件中的字符串覆盖,这是因为,空字符串明确指明MySQL账户必须有空密码)。
对于db,指定NULL值或空字符串
对于port,指定“0”值。
对于unix_socket,指定NULL值。
对于某一参数,如果在选项文件中未发现值,将使用它的默认值,如本节前面介绍的那样。
|
Mysql —— linux下使用c语言访问mySql数据库相关推荐
- Linux下使用C语言访问MySQL函数
//mysqlVersion.c /************************************************************* FileName : mysqlVers ...
- MySQL笔记12:C语言访问MYSQL数据库的完整的代码例子
C语言访问MYSQL数据库的完整的代码例子 1.手写安装带mysql sdk 的mysql 2.新建控制台项目,项目属性中把 C:\Program Files\MySQL\MySQL Server 5 ...
- linux mysql c语言编程,在Linux下通过C语言操作MySQL数据库
2010年1月27日 晚 22:10 作者:longyun(http://www.linuxdiyf.com/mailto:mtd527@gmail.com) 续:小弟最近想学习数据库,并想开发一个简 ...
- ubuntu下c 访问mysql_Ubuntu下用C语言访问MySQL数据库
在Ubuntu下费了好长时间终于让C操作MySQL成功了,在此把方法记下来,留着以后用.先安装MySQL 代码: sudo apt-get install mysql 在Ubuntu下费了好长时间终于 ...
- LINUX下PHP使用PDO访问MYSQL的连接设置注意事项
为什么80%的码农都做不了架构师?>>> 在使用XAMPP搭建站点,mysql单独安装,使用PDO连接时出现错误提示"mysql.sock"不存在, 转载于 ...
- linux下c语言调用mysql,Linux下C语言连接MySQL
首先保证安装: 1:安装MySQL:sudo apt-get install mysql-server mysql-client 2:安装MySQL开发包:sudo apt-get install l ...
- mysql c测试程序_Linux平台下从零开始写一个C语言访问MySQL的测试程序
Linux 平台下从零开始写一个 C 语言访问 MySQL 的测试程序 2010-8-20 Hu Dennis Chengdu 前置条件: (1) Linux 已经安装好 mysql 数据库: (2) ...
- c语言访问mysql,C语言访问mysql数据库
mysql中新建的数据库为hyx,hyx中的表为my_schema,表中的数据为下图: 编写代码,访问表中的数据,测试代码如下: #include "stdafx.h" #incl ...
- 使用C语言访问MySQL数据库基础
使用C语言访问MySQL数据库基础 一.MySQL管理 包含在MySQL发行版中的一些有用的工具程序使管理工作变得相当容易. 除mysqlshow命令以外,所有的MySQL命令都接受所示的3个标准参数 ...
最新文章
- windows下gdb的下载和安装使用初步
- WEB Struts2 中OGNL的用法
- 初识Hibernate 缓存
- 《Scikit-Learn与TensorFlow机器学习实用指南》第16章 强化学习
- python写标准api_用python写api
- PSP金手指CMF_r21d修改版安装方法
- Linux命令之awk:运算与判断(三)
- 推荐linux输入法,linux中文输入法
【搞定技巧】
- mysql中日期相减_1104绝密公式,如何直接用2个日期直接算剩余时间区间
- NSOperation
- 异常检测论文阅读《Anomaly Detection in Video Sequences: A Benchmark and Computational Model》
- 服务器oemSN查询系统,查看服务器sn码命令
- g++/gcc compile_options
- 【特征检测】HOG特征算法
- 【蓝桥】2019第十届蓝桥杯省赛C/C++大学B组题目及感想(考场代码和思考)
- HarmonyOS服务开放平台全面了解
- JMM可见性内存模型
- 高电平低电平是什么意思
- 安卓手机开发python -- Pydroid3 教程
- python将eps文件转jpeg文件
热门文章
- JVM中的STW和CMS
- 关于运行robot framework 报错解决方法,ModuleNotFoundError: No module named 'robot'
- 20162313苑洪铭 第二周作业
- 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载四(使用程序载入事件)...
- [转]Entity Framework走马观花之把握全局
- web开发中的缓存问题的研究(一)
- 用linux搭建ntp服务,使用linux配置NTP Server
- mysql1193 HY000_[MySQL参数取值] Status取值ERROR 1193 (HY000): Unknown system_MySQL
- Spring内核研究-通过工厂注入
- Centos netperf安装