linux c mysql教程_Linux c访问mysql 编写入门

一) 前置条件:

(1)       Linux 已经安装好 mysql 数据库;

(2)       Linux 已经安装了 gcc 编译器;

(二)数据库准备:

为了便于描述,假设数据库的 root 用户密码为 root_pwd 。

(1)       以 root 用户登陆数据库

#mysql -uroot –proot_pwd

mysql>

(2)       创建数据 testdb

mysql> create database testdb;

(3)       创建表

mysql> use testdb;

mysql> create table t_users(userid int not null, username varchar(20) not null);

(4)       向表中插入一条记录

mysql> insert into t_users(userid, username) values(1, 'HuDennis');

(5)       创建用户

mysql> create user testdb_user;

(6)       对用户授权

mysql> grant select, insert, update, delete on *.* to 'testdb_user'@'localhost' identified by '123456';

mysql> flush privileges;

(7)       查看用户及该用户的权限

mysql> use mysql;

mysql> select user from user;

mysql> show grants for testdb_user@localhost;

(8)       [ 备用 ] 删除数据库及用户

mysql> drop database testdb;

mysql> show databases;

mysql> drop user testdb_user;

mysql> drop user testdb_user@localhost;

(三) C 源代码 testdb.c 准备:

#include

#include

#include

static char *server_options[] = { "mysql_test", "--defaults-file=my.cnf" };

int num_elements = sizeof(server_options)/ sizeof(char *);

static char *server_groups[] = { "libmysqld_server", "libmysqld_client" };

int main(void)

{

if (mysql_server_init(num_elements, server_options, server_groups))

{

exit(1);

}

MYSQL *conn;

MYSQL_RES *res;

MYSQL_ROW row;

char *server = "localhost";

char *user = "testdb_user";

char *password = "123456";

char *database = "testdb";

conn = mysql_init(NULL);

/* Connect to database */

if (!mysql_real_connect(conn, server,

user, password, database, 0, NULL, 0))

{

fprintf(stderr, "%s/n", mysql_error(conn));

exit(1);

}

/* send SQL query */

if (mysql_query(conn, "select userid, username from t_users"))

{

fprintf(stderr, "%s/n", mysql_error(conn));

exit(1);

}

if ((res = mysql_use_result(conn)) == NULL)

{

fprintf(stderr, "%s/n", mysql_error(conn));

exit(1);

}

int num = mysql_num_fields(res);

while ((row = mysql_fetch_row(res)) != NULL)

{

int i=0;

for (; i

{

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

}

printf("/n");

}

/* close connection */

mysql_free_result(res);

mysql_close(conn);

/* Use any MySQL API functions here */

mysql_server_end();

return EXIT_SUCCESS;

}#include #include #include static char *server_options[] = { "mysql_test", "--defaults-file=my.cnf" };int num_elements = sizeof(server_options)/ sizeof(char *); static char *server_groups[] = { "libmysqld_server", "libmysqld_client" }; int main(void){ if (mysql_server_init(num_elements, server_options, server_groups)) { exit(1); } MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; char *user = "testdb_user"; char *password = "123456"; char *database = "testdb"; conn = mysql_init(NULL); /* Connect to database */ if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s/n", mysql_error(conn)); exit(1); } /* send SQL query */ if (mysql_query(conn, "select userid, username from t_users")) { fprintf(stderr, "%s/n", mysql_error(conn)); exit(1); } if ((res = mysql_use_result(conn)) == NULL) { fprintf(stderr, "%s/n", mysql_error(conn)); exit(1); } int num = mysql_num_fields(res);while ((row = mysql_fetch_row(res)) != NULL) { int i=0; for (; i

(四) C 程序编译与运行:

(1) 编译 testdb.c

# gcc testdb.c -I/usr/local/mysql/include -L/usr/local/mysql/lib -lmysqlclient

注意: -I 和 -L 的路径应该根据 mysql 的安装路径不同而应该有所不同。同理,下面的 LD_LIBRARY_PATH 变量一样。

(2) 将库文件路径加入到 LD_LIBRARY_PATH 环境变量中去

# LD_LIBRARY_PATH =$LD_LIBRARY_PATH:/usr/local/mysql/lib

(3) 运行编译得到的可执行文件 a.out

#./a.out

1 HuDennis

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql性能优化 硬件优化_mysql性能优化学习笔记(6)数据库配置优化硬件优化...

一、操作系统配置优化:1. 网络方面,修改/etc/sysctl.conf文件,增加tcp支持的队列数,减少断开连接时,资源的回收。2. 打开文件数的限制。修改/etc/security/limits.conf文件,增加一下内容以修改打开文件数量…

mysql崩溃_mysql崩溃原因分析

最近开发人员那边总说他们的程序连接一台指定服务器的时候出现闪断的现象,有连接失败的日志生成.于是就登陆到这台机器上探查个究竟,看了下mysql的错误日志,发现有mysql崩溃的现象,数据目录下面生成好多的bin文件,错误日志里面的内容如下:090922 1:10:39 - mysqld got signal …

dataframe存到mysql中_pandas实现to_sql将DataFrame保存到数据库中

目的在数据分析时,我们有中间结果,或者最终的结果,需要保存到数据库中;或者我们有一个中间的结果,如果放到数据库中通过sql操作会更加的直观,处理后再将结果读取到DataFrame中。这两个场景,就需…

mysql用于放置可执行文件的目录_在 MySQL 安装目录中, bin 目录用于放置一些可执行文件。_面向对象程序设计(C#)答案_学小易找答案...

【单选题】形成通货膨胀的原因是( )【单选题】患者在就诊的过程中,其投入的最主要内容是( )。【多选题】25 、绝对剩余价值生产和相对剩余价值生产的区别和联系是( )【多选题】21 、劳动力成为商品的条件( )【单选题】所谓的内部服务指的是( )。【单选题】服务业主要对应的产业…

python 跳过计算错误_在python中计算分数时如何跳过被0除的错误?

我正在运行一个很长的CSV文件下面的函数。函数每50行计算列MFE的Z分数。这50行中有一些只包含零,因此在计算Zscore时,程序会停止,因为它不能被零除。如何解决这个问题,而不是停止程序运行打印这些行的z分数0?在def doZ…

python中的seed_Python seed() 函数 - Python 教程 - 自强学堂

Python seed() 函数描述seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。。语法以下是 seed(() 方法的语法:import randomrandom.seed ( [x] )注意:seed(()是不能直接访问的,需要导入 random 模块,…

ubuntu dpkg mysql_ubuntu-12.04 – 在Ubuntu 12.04上无法启动MySQL5.5 – “dpkg:依赖问题”...

这似乎是12.04上的一个常见问题。我在this thread尝试过,包括:sudo apt-get cleansudo apt-get autocleansudo apt-get remove --purge mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server mysql-server-5.5 mysql-server-core-5.5sudo …

mysql 中caption_Django-Model操作数据库(增删改查、连表结构)(示例代码)

Django-Model操作数据库(增删改查、连表结构)一、数据库操作1、创建model表基本结构from django.db importmodelsclassuserinfo(models.Model):#如果没有models.AutoField,默认会创建一个id的自增列name models.CharField(max_length 30)emailmodels.EmailField()…

python中如何定义函数的传入参数是option的_python – 当使用@ click.option将命令行参数传递给函数时,如何返回值?...

我试图使用click python包将命令行参数传递给函数.官方文档中的示例如解释的那样工作.但是文档中没有提到如何返回值.文档中没有任何函数返回值,因此我不明白如何执行此操作.以文档为例:import clickclick.command()click.option(--count, default3, helpNumber of …

python牛顿法寻找极值_python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例...

Rosenbrock函数的定义如下:其函数图像如下:我分别使用梯度下降法和牛顿法做了寻找Rosenbrock函数的实验。梯度下降梯度下降的更新公式:图中蓝色的点为起点,橙色的曲线(实际上是折线)是寻找最小值点的轨迹,终点(最小值点…

借贷记账法下的账户对应关系_2017年会计基础考点之借贷记账法下的账户对应关系与会计分录...

2016年会计从业考试各省已接近尾声,中公会计考试网为帮助参加2017年会计从业资格考试的伙伴们备考,特推出会计从业资格考试各科目章节重难点知识点讲解,今天小编给大家带来的是会计基础考点之借贷记账法下的账户对应关系与会计分录&#xff0…

mysql报11004_使用mysqli扩展技术查看服务器连接错误报告的方法

使用mysqli扩展技术查看服务器连接错误报告的方法作为PHP的黄金搭档MySQL数据库,在PHP项目开发过程中有着举足轻重的作用,这不仅因为MySQL是完全免费的,而且和PHP一样都是完全跨平台的。但在实际项目开发过程中,PHP与MySQL数据库产…

_Linux进程信号详解

信号是什么一个信号就是一条小消息,它通知进程系统中发生了一个某种类型的事件信号是多种多样的,并且一个信号对应一个事件,这样才能做到收到一个信号后,知道到底是一个什么事件,应该如何处理(但是要保证必…

java乘法表_Java中四种9*9乘法表的实现方式(附代码)

前言: 初学java,实现99乘法表是必学必会的内容。需求 : 分别写出上下左右,对应四个角的乘法表。思路: 可以先打印出*星星,形成一个直角三角形,然后再替换成乘法公式。代码如下:public class Demo {public static void main(String[] args) {for (int i 1; i <5 ; i) {for (…

excel表格不够怎么添加_Excel表格水印,你以前好象添加错了!

为excel表格添加水印&#xff0c;通常是使用插入-艺术字来完成。但这样做有一个很大的问题&#xff1a;如果表格有很多页&#xff0c;就需要添加N多个艺术字&#xff0c;太麻烦了。其实有一个超简单的批量设置方法&#xff0c;再多页也可以一次性设置。需要添加水印的Excel表格…

java 异步服务调用_java异步调用方法

一.利用多线程直接new线程Thread t newThread(){Overridepublic voidrun() {longTimeMethod();}};使用线程池private ExecutorService executor Executors.newCachedThreadPool() ;public void fun() throwsException {executor.submit(newRunnable(){overridepublic voidrun(…

电脑手机wifi互传文件_安卓手机文件互传

怎么不借用第三方工具&#xff0c;安卓手机实现相互文件快传呢&#xff1f;苹果&#xff1a;首先不用多说&#xff0c;苹果可以使用Air Drop功能&#xff0c;苹果全家桶可以无障碍互传。长期以来&#xff0c;除开微信和QQ&#xff0c;不同品牌安卓手机互传文件依靠的途径只有蓝…

传统的线性降维方法效果不佳。_10分钟数据降维入门

1. 前言在硕士期间学习研究了数据降维相关的知识&#xff0c;阅读了一些相关文章&#xff0c;也断断续续在知乎上写了一些数据降维的入门级文章&#xff0c;收获了一些小伙伴的赞同&#xff0c;并在GitHub上开源了一些特征抽取算法的源代码&#xff0c;获得了的1.1kstar。因为在…

嵌入式开发网络配置——windows连热点,开发板和电脑网线直连

目录 电脑 WiFi 上网&#xff0c;开发板和电脑直连 使用场景 设置VMware虚拟机的网络配置 Ubuntu设置——版本18.04 ​编辑 windows设置 开发板设置 原因&#xff1a;虚拟机Linux移植可执行程序到开发板失败 最后发现虚拟机的Linuxping不通开发板 下面是我的解决方法 …

java ajax data_jquery ajax 方法中传递的data参数,如何在java类中获取

展开全部var params"username""1";$.ajax({type : "POST", //数据发送方式url : "../servlet/clearCache",dataType : "json", //接受数据格式 (这里有很多,常用的有html,xml,js,json)data:params,//datenew Date(), 要传递…