linux c mysql教程_linux下c操作mysql之增删改查

书接上文,继续进行linux 下c操作mysql。

1.创建表/插入数据

mysql> desc children

-> ;

+---------+-------------+------+-----+---------+----------------+

| Field | Type| Null | Key | Default | Extra |

+---------+-------------+------+-----+---------+----------------+

| childno | int(11) | NO | PRI | NULL| auto_increment |

| fname | varchar(32) | YES | | NULL||

| age | int(11) | YES | | NULL||

+---------+-------------+------+-----+---------+----------------+

3 rows in set (0.00 sec)

mysql> select * from children;

+---------+---------+------+

| childno | fname | age |

+---------+---------+------+

| 1 | Jenny | 21 |

| 2 | Andrew | 17 |

| 3 | Gavin | 8 |

| 4 | Duncan | 6 |

| 5 | Emma | 4 |

| 6 | Alex | 15 |

| 7 | Adrian | 9 |

| 8 | jeffsui | 5 |

+---------+---------+------+

8 rows in set (0.00 sec)

2.文件清单

demo.c

/************************************************************

FileName : demo.c

FileFunc : C语言接口访问MySQL

Version : V0.1

Author : JeffSui

Date : 2014-02-20

Descp : c查询mysql数据库遍历输出

*************************************************************/

#include

#include

#include "/usr/include/mysql/mysql.h"

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

{

MYSQL my_connection,*conn_ptr;

MYSQL_RES *res_ptr;

MYSQL_ROW sqlrow;

int iRet;

int iTableRow,iTableCol,i,j;

char *server = "localhost";

char *user = "root";

char *password = "";

char *database = "csql";

unsigned int uiTimeOut = 7;//设置连接超时7s

conn_ptr = mysql_init(&my_connection);//初始化连接句柄

if( !conn_ptr )

{

fprintf(stderr,"mysql_init failed ! \n");

return EXIT_FAILURE;

}

iRet = mysql_options(&my_connection,MYSQL_OPT_CONNECT_TIMEOUT,(const char *)&uiTimeOut);//设置连接超时

if( iRet )

{

fprintf(stderr,"Connection is timeout! \n");

return EXIT_FAILURE;

}

conn_ptr = mysql_real_connect(&my_connection,server,user,password,database,0,NULL,0);//连接数据库

if( conn_ptr )

{

printf("Connection success!\n");

iRet = mysql_query(&my_connection,"select * from children");//执行SQL语句

if( iRet )

{

fprintf(stderr,"select error %d: %s !\n",mysql_errno(&my_connection),mysql_error(&my_connection));//>打印错误处理具体信息

return EXIT_FAILURE;

}

res_ptr = mysql_store_result(&my_connection);//集合

if( res_ptr )

{

iTableRow = mysql_num_rows(res_ptr);//行

iTableCol = mysql_num_fields(res_ptr);//列

for(i=0; i

{

sqlrow = mysql_fetch_row(res_ptr);

for(j=0; j

{

printf("%-8s ",sqlrow[j]);//字符串向左靠,右补空格

}

printf("\n");

}

mysql_free_result(res_ptr);//完成对数据的所有操作后,调用此函数来让MySQL库清理它分配的对象

}

mysql_close(&my_connection);//关闭连接

} else

{

fprintf(stderr,"Connection failed!\n");

if( mysql_errno(&my_connection) )

{

fprintf(stderr,"Connection error %d: %s!\n",mysql_errno(&my_connection),mysql_error(&my_connection));

}

}

return EXIT_SUCCESS;

}

insert.c /******************************************************

FileName : insert.c

FileFunc : C语言接口访问MySQL

Version : V0.1

Author : JeffSui

Date : 2014-02-24

Descp : c插入mysql数据库

******************************************************/

#include

#include

#include "/usr/include/mysql/mysql.h"

int main() {

MYSQL *conn_ptr;

int res;

conn_ptr = mysql_init(NULL);

if (!conn_ptr) {

printf("mysql_init failed\n");

return EXIT_FAILURE;

}

conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "", "csql", 0, NULL, 0);

if (conn_ptr) {

res = mysql_query(conn_ptr, "insert into children values(null,'jeffsui',5)"); //可以把insert语句替换成delete或者update语句,都一样的

if(!res){

printf("Insert %lu rows\n",(unsigned long)mysql_affected_rows(conn_ptr));

}else{

fprintf(stderr,"Insert error %d: %s\n",mysql_error(conn_ptr),mysql_error(conn_ptr));

}

}else{

printf("Connection failed!");

}

mysql_close(conn_ptr);

return EXIT_SUCCESS;

}

makefile

#makefile开始

c_mysql_demo:demo.c

@gcc -lm -lpthread -ldl -I/usr/include/mysql demo.c -o demo -L/usr/lib64/mysql -lmysqlclient

@gcc -lm -lpthread -ldl -I/usr/include/mysql insert.c -o insert -L/usr/lib64/mysql -lmysqlclient

clean:

@rm -rf demo

@rm -rf insert

#makefile结束

3.执行make 指令

4.执行目标路径下的

[root@tf-test c_pro]# ./insert

Insert 1 rows

[root@tf-test c_pro]# ./demo

Connection success!

1 Jenny 21

2 Andrew 17

3 Gavin 8

4 Duncan 6

5 Emma 4

6 Alex 15

7 Adrian 9

8 jeffsui 5

9 kelly 22

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

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

相关文章

ios系统python编译器_MacBook如何安装Python编译器-百度经验

编程是一门需要动手实践的技能,由于Python的性能,许多人都将其作为学习编程的入门语言。而要想学好Python,首先要在电脑上安装Python,并安装一个可以解释Python的文本编辑器。在此以在MacBook上安装Sublime Text为例。 工具/原料 …

jvm需要多长时间进行转义分析? 可能比您想象的要长。

这篇文章着眼于转义分析,特别是jvm在运行的程序中执行转义分析需要多长时间。 我做了一些观察,但目前还没有全部解释。 作为介绍,让我们绕道看看jvm -Xcomp中一个鲜为人知且使用更少的标志(这将是一件好事)。 该标志…

Java补漏(一)

第一章前言 在学长的建议下,为了弥补之前学Java漏下的或者不是非常清楚的知识点,买了本蛮好的教科书-《Java学习笔记(JDK6)》,正式又一次学习。为了记下一些让我恍然大悟的知识。写了本文档。…

子集和问题 算法_子集问题 主要是去重算法

给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]

mysql存储引擎使用教程_mysql教程:如何写MySQL存储引擎

在MySQL 5.1中开发一个存储引擎已经是比较方便了。所谓存储引擎实际上是按照MySQL的约定,提供某些接口的实现而已,如MySQL插入一条记录时将调用write_row方法,通过索引检索时将调用index_read和index_next方法等。MySQL与存储引擎之间的接口主…

express中connect-flash中间件的使用

在学习node的时候,flash是困扰我最久的一个中间件,之前一直都没有很好的理解,这里做一个总结。 参考自:http://yunkus.com/connect-flash-usage/ 什么是flash? The flash is a special area of the session used for s…

spring environment_程序员:Spring项目中简单几步实现多个动态数据源切换

每一个请求与其他的用户是面对不同的数据库,这就需要用到动态数据源切换,来满足不同数据库、不同数据表(不同数据源)的灵活调用。动态数据源切换满足mysql、oracle等主流数据库进行动态数据源切换。使用方法在 WEB-INF 目录下建立 lib 目录,并…

算法笔记_163:算法提高 最大乘积(Java)

目录 1 问题描述 2 解决方案 1 问题描述 问题描述对于n个数&#xff0c;从中取出m个数&#xff0c;如何取使得这m个数的乘积最大呢&#xff1f;输入格式第一行一个数表示数据组数每组输入数据共2行&#xff1a;第1行给出总共的数字的个数n和要取的数的个数m&#xff0c;1<n&…

ServletRequest startAsync()的用途有限

前段时间我遇到了Servlet 3.0中AsyncContext.start&#xff08;…&#xff09;的目的是什么&#xff1f; 题。 引用上述方法的Javadoc &#xff1a; 使容器调度线程&#xff08;可能从托管线程池中&#xff09;运行指定的Runnable 。 提醒大家&#xff0c; AsyncContext是Servl…

python3.7下载tensorflow_【AI初体验】在anaconda中python3.7版本安装Tensorflow 与 Keras来玩玩...

哈啰&#xff0c;大家好&#xff0c; 单纯分享自己摸索学习AI的过程&#xff0c; 在自己的文章【Python 超入门】(1) 心原一马从零开始带你学程序中&#xff0c; 记录了安装撰写python的工具-anaconda 的方法&#xff0c; 当时安装的版本是python3.7版&#xff0c; 但是据说目前…

com/mysql/jdbc/sqlerror_com.mysql.jdbc.sqlerror

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)在MYSQL中的BLOB字段中插入图片&#xff0c;提示出错&#xff01;&#xff01;&#xff01;加载MYSQL驱动成功com.mysql.jdbc.JDBC4Connection1479febc:\Users\hjx\Desktop\pic.jpgfile:8202com/search?q38…

Cocos2d-x3.1FileUtilsTest使用

Cocos2d-x3.1中FileUtils的使用&#xff1a;本使用教程是基于HelloWorld的。仅仅需在HelloWorld的init()函数中加入例如以下代码 //头文件 #include "platform/CCFileUtils.h"//FileUtils头文件 #include <stdio.h>//使用文件操作 #include "deprecated/C…

古巴平台上的通用过滤器–类固醇上的excel过滤器

正如我上次承诺的那样&#xff0c;我计划浏览该平台的某些功能&#xff0c;这些功能我认为非常有价值。 所以我将在这里做一些系列。 从明显的用户界面&#xff0c;过滤&#xff0c;安全性到一些高级功能&#xff08;如Web Portal&#xff0c;可扩展性&#xff0c;审核&#xf…

python关键字详解_Python 中的关键字with详解

在 Python 2.5 中&#xff0c;with关键字被加入。它将常用的 try ... except ... finally ...模式很方便的被复用。看一个最经典的例子&#xff1a; with open(file.txt) as f: content f.read() 在这段代码中&#xff0c;无论with中的代码块在执行的过程中发生任何情况&#…

python interactive window_如果PySide应用程序是从IPython interactive cons运行的,上下文菜单就会消失...

在下面给出的最小示例中&#xff0c;上下文菜单(右键单击gui的白色部分)仅短暂显示&#xff0c;然后消失。如果应用程序是从IPython(0.13.1)控制台启动的&#xff0c;则会出现这种情况。当从shell正常启动时&#xff0c;它可以正常工作。在import sysfrom PySide import QtGui,…

基准测试:Java 8 Lambda和流如何使您的代码慢5倍

与长期的实现相比&#xff0c;Java 8 lambda和流的性能如何&#xff1f; Lambda表达式和流在Java 8中受到了热烈的欢迎。这些是迄今为止很激动人心的功能&#xff0c;很长一段时间以来&#xff0c;它们就已经应用到Java中了。 新的语言功能使我们可以在代码中采用更具功能性的…

ssm框架逻辑删除mysql_MybatisPlus--CRUD接口及主键增长策略、自动填充、乐观锁更新数据...

目录一、insert1、插入操作2、主键策略二、update1、根据Id更新操作2、自动填充3、乐观锁三、select1、根据id查询记录2、通过多个id批量查询3、简单的条件查询4、分页四、delete1、根据id删除记录2、批量删除3、简单的条件查询删除4、逻辑删除一、insert1、插入操作RunWith(Sp…

python对英语的要求_学python需要英语基础吗

在很多人的眼里&#xff0c;学习编程需要英语基础&#xff0c;因为程序代码全是英文字母&#xff0c;如果没有英语基础可能很难学懂编程。程序代码是英文确实没有错&#xff0c;但是也不是必须得懂英语&#xff0c;因为计算机程序有自己语言&#xff0c;并不是我们生活中的英语…

mysql5.6 优点_MySQL5.6复制:GTID的优点和限制(第一部分)_MySQL

bitsCN.com全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性。它为维护特定的复制拓扑结构下服务器的DBA们大幅度改善他们的工作状况提供了多种可能性。然而&#xff0c;你还应该明白当前实现的一些局限。本博文是专门对在生产环境中启用GTID到底意…

python找不到csv文件_Python如何读取csv文件

逗号分隔值&#xff08;Comma-Separated Values&#xff0c;CSV&#xff0c;有时也称为字符分隔值&#xff0c;因为分隔字符也可以不是逗号&#xff09;&#xff0c;其文件以纯文本形式存储表格数据&#xff08;数字和文本&#xff09;。纯文本意味着该文件是一个字符序列&…