文档章节

用C语言操作MySQL数据库

四非而罪
 四非而罪
发布于 2015/05/06 15:19
字数 1855
阅读 17
收藏 0
  用C语言操作MySQL数据库   2013-01-22 19:33:38

 

函数

描述

mysql_affected_rows()

返回上次UPDATEDELETEINSERT查询更改/删除/插入的行数。

mysql_autocommit()

切换 autocommit模式,ON/OFF

mysql_change_user()

更改打开连接上的用户和数据库。

mysql_charset_name()

返回用于连接的默认字符集的名称。

mysql_close()

关闭服务器连接。

mysql_commit()

提交事务。

mysql_connect()

连接到MySQL服务器。该函数已不再被重视,使用mysql_real_connect()取代。

mysql_create_db()

创建数据库。该函数已不再被重视,使用SQL语句CREATE DATABASE取而代之。

mysql_data_seek()

在查询结果集中查找属性行编号。

mysql_debug()

用给定的字符串执行DBUG_PUSH

mysql_drop_db()

撤销数据库。该函数已不再被重视,使用SQL语句DROP DATABASE取而代之。

mysql_dump_debug_info()

让服务器将调试信息写入日志。

mysql_eof()

确定是否读取了结果集的最后一行。该函数已不再被重视,可以使用mysql_errno()mysql_error()取而代之。

mysql_errno()

返回上次调用的MySQL函数的错误编号。

mysql_error()

返回上次调用的MySQL函数的错误消息。

mysql_escape_string()

为了用在SQL语句中,对特殊字符进行转义处理。

mysql_fetch_field()

返回下一个表字段的类型。

mysql_fetch_field_direct()

给定字段编号,返回表字段的类型。

mysql_fetch_fields()

返回所有字段结构的数组。

mysql_fetch_lengths()

返回当前行中所有列的长度。

mysql_fetch_row()

从结果集中获取下一行

mysql_field_seek()

将列光标置于指定的列。

mysql_field_count()

返回上次执行语句的结果列的数目。

mysql_field_tell()

返回上次mysql_fetch_field()所使用字段光标的位置。

mysql_free_result()

释放结果集使用的内存。

mysql_get_client_info()

以字符串形式返回客户端版本信息。

mysql_get_client_version()

以整数形式返回客户端版本信息。

mysql_get_host_info()

返回描述连接的字符串。

mysql_get_server_version()

以整数形式返回服务器的版本号。

mysql_get_proto_info()

返回连接所使用的协议版本。

mysql_get_server_info()

返回服务器的版本号。

mysql_info()

返回关于最近所执行查询的信息。

mysql_init()

获取或初始化MYSQL结构。

mysql_insert_id()

返回上一个查询为AUTO_INCREMENT列生成的ID

mysql_kill()

杀死给定的线程。

mysql_library_end()

最终确定MySQL C API库。

mysql_library_init()

初始化MySQL C API库。

mysql_list_dbs()

返回与简单正则表达式匹配的数据库名称。

mysql_list_fields()

返回与简单正则表达式匹配的字段名称。

mysql_list_processes()

返回当前服务器线程的列表。

mysql_list_tables()

返回与简单正则表达式匹配的表名。

mysql_more_results()

检查是否还存在其他结果。

mysql_next_result()

在多语句执行过程中返回/初始化下一个结果。

mysql_num_fields()

返回结果集中的列数。

mysql_num_rows()

返回结果集中的行数。

mysql_options()

mysql_connect()设置连接选项。

mysql_ping()

检查与服务器的连接是否工作,如有必要重新连接。

mysql_query()

执行指定为Null终结的字符串SQL查询。

mysql_real_connect()

连接到MySQL服务器。

mysql_real_escape_string()

考虑到连接的当前字符集,为了在SQL语句中使用,对字符串中的特殊字符进行转义处理。

mysql_real_query()

执行指定为计数字符串的SQL查询。

mysql_refresh()

刷新或复位表和高速缓冲。

mysql_reload()

通知服务器再次加载授权表。

mysql_rollback()

回滚事务。

mysql_row_seek()

使用从mysql_row_tell()返回的值,查找结果集中的行偏移。

mysql_row_tell()

返回行光标位置。

mysql_select_db()

选择数据库。

mysql_server_end()

最终确定嵌入式服务器库。

mysql_server_init()

初始化嵌入式服务器库。

mysql_set_server_option()

为连接设置选项(如多语句)。

mysql_sqlstate()

返回关于上一个错误的SQLSTATE错误代码。

mysql_shutdown()

关闭数据库服务器。

mysql_stat()

以字符串形式返回服务器状态。

mysql_store_result()

检索完整的结果集至客户端。

mysql_thread_id()

返回当前线程ID

mysql_thread_safe()

如果客户端已编译为线程安全的,返回1

mysql_use_result()

初始化逐行的结果集检索。

mysql_warning_count()

返回上一个SQL语句的告警数。

MySQL交互时,应用程序应使用该一般性原则:

1.    通过调用mysql_library_init(),初始化MySQL库。库可以是mysqlclient C客户端库,或mysqld嵌入式服务器库,具体情况取决于应用程序是否与“-libmysqlclient”“-libmysqld”标志链接。

2.    通过调用mysql_init()初始化连接处理程序,并通过调用mysql_real_connect()连接到服务器。

3.    发出SQL语句并处理其结果。(在下面的讨论中,详细介绍了使用它的方法)。

4.    通过调用mysql_close(),关闭与MySQL服务器的连接。

5.    通过调用mysql_library_end(),结束MySQL库的使用。

介绍常用到的MYSQL相关的C变量类型。这些类型在我们后面定义变量的时候会用到

1MYSQL

       要连接MYSQL,必须建立MYSQL实例,通过mysql_init初始化方能开始进行连接

示例:

MYSQL mysql;                    #创建MYSQL实例

mysql_init(&mysql);             #初始化开始进行连接

2MYSQL_RES

这个结构代表返回行的一个查询的(SELECT, SHOW, DESCRIBE, EXPLAIN)的结果。返回的数据称为数据集 从数据库读取数据,最后就是从MYSQL_RES中读取数据。

PS:类似于JAVA里面的ResultSet变量一样,将结果集存入到此变量中再从它里面去读数据。

3MYSQL_ROW

这是一个行数据的类型安全(type-safe)的表示。当前它实现为一个计数字节的字符串数组。行通过调用mysql_fetch_row()获得

4MYSQL_FIELD

你可以通过重复调用mysql_fetch_field()对每一列获得MYSQL_FIELD结构。这个结构包含字段信息,例如字段名、类型和大小。

PS:此变量定义的是列的相关属性问题!

 

 

 

 

示例一:实现遍历查询select * from table-name 操作

#include "windows.h"

#include "mysql.h"

#pragma comment(lib,"libmySQL.lib")

int main()

{

      MYSQL mysql;     //mysql连接

      MYSQL_RES *res; //这个结构代表返回行的一个查询结果集

      MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示

      char *query;   //查询语句     

      int t,r;

      mysql_init(&mysql);

         if (!mysql_real_connect(&mysql,"localhost", "root", "123", "test",3306,NULL,0))

      {

 

         printf( "Error connecting to database: %s",mysql_error(&mysql));

 

      } else

         printf("Connected...");

         query="SET CHARACTER SET utf8"; //设置编码

      t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

      if(t)

      {

           printf("编码设置失败");

      }

         query=" select * from a ";

      t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

      if(t)

      {

          printf("执行查询时出现异常: %s",mysql_error(&mysql));

      }else

          printf("[%s] 构建成功",query);

      res=mysql_store_result(&mysql);

      while(row=mysql_fetch_row(res))

      {                             

          /*

                for(t=0;t<mysql_num_fields(res);t++)

           {

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

           }

                 */

                printf("%s",row[1]);         表示查询的第几个字段的!也还可以遍历全部字段信息

          printf("\n");

 

      }

      mysql_free_result(res);

mysql_close(&mysql);

         return 0;

}

 

示例二:执行插入、更新、删除操作

#include "windows.h"

#include "mysql.h"

#pragma comment(lib,"libmySQL.lib")

int main()

{

      MYSQL mysql;     //mysql连接

      MYSQL_RES *res; //这个结构代表返回行的一个查询结果集

      MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示

      char *query;   //查询语句     

      int t,r;

      mysql_init(&mysql);

         if (!mysql_real_connect(&mysql,"localhost", "root", "123", "test",3306,NULL,0))

      {

 

         printf( "Error connecting to database: %s",mysql_error(&mysql));

 

      } else

         printf("Connected...");

         query="SET CHARACTER SET utf8"; //设置编码

      t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

      if(t)

      {

           printf("编码设置失败");

      }

         query="insert into a(name,age) values('w',9)";

      t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

      if(t)

      {

          printf("执行查询时出现异常: %s",mysql_error(&mysql));

      }else

          printf("[%s] 构建成功",query);

      mysql_close(&mysql);

      return 0;

}

本文转载自:

共有 人打赏支持
上一篇: Repo详解
四非而罪
粉丝 0
博文 7
码字总数 10214
作品 0
黄浦
程序员
私信 提问
python入门介绍及使用

1.python是什么 Python是一种计算机程序设计语言, Python是一种解释型,面向对象, 动态数据类型的高级设计语言 用Python可以做什么? 可以做日常任务, 比如自动备份你的MP3,可以做网站, 很多著...

陈小扁
2016/03/08
127
0
专门为电商设计的数据库中间件 - Cetus

Cetus是由C语言开发的关系型数据库MySQL的中间件,主要提供了一个全面的数据库访问代理功能。Cetus连接方式与MySQL基本兼容,应用程序几乎不用修改即可通过Cetus访问数据库,实现了数据库层的...

lazio579
2018/03/20
0
0
程序员如何提高自己的逻辑思维和技术水平

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。 菜鸟程序员如何提高自己的逻辑思维和技术水平 1、 学习一门脚本语言 学习一门脚本语言 可以让你摆脱对底层语言的恐惧感,脚本语言可...

SXTkaifa
2016/10/30
47
0
C语言连接 Access 数据库

看视频上是连接MySQL数据库,MySQL安装后配置比较麻烦,所以我试着用老师给的模板连接Access数据库,Access是比较方便使用的 只要装了office几乎都有。 首先在百度搜索 odbc 连接字符串 找到...

长平狐
2012/09/03
1K
0
c语言 php mysql开发问题:c语言可以给php网页发消息么?

我的需求是这样的:前天界面出入数据到mysql 后台c语言探测到数据插入则取出进行处理,处理结果再插入到数据库,前台界面再把结果显示出来。。请问php可以做到探测数据库有结果插入吗?或者c...

wakelay
2013/05/16
398
4

没有更多内容

加载失败,请刷新页面

加载更多

【PG内核】pg11秒级新增非空默认字段的实现方法

pg11新特性,可以瞬间向一个表中添加非空默认字段。 今天研究了一下这个特性的内核实现方式,写个博客简单记录一下。 结论奉上 pg在从硬盘或者内存获取到一条数据记录后(以下称tuple),会使...

movead
16分钟前
0
0
如何保证MongoDB的安全性?

上周写了个简短的新闻《MongoDB裸奔,2亿国人求职简历泄漏!》: 根据安全站点HackenProof的报告,由于MongoDB数据库没有采取任何安全保护措施,导致共计202,730,434份国人求职简历泄漏。 然...

Fundebug
22分钟前
0
0
KVM

目录 (1):简介及安装 1. KVM 介绍 1.0 虚拟化简史 1.1 KVM 架构 2. KVM 的功能列表 3. KVM 工具集合 4. RedHat Linux KVM 安装 4.1 在安装 RedHat Linux 时安装 KVM 4.2 在已有的 RedHat...

临江仙卜算子
37分钟前
0
0
脚本配置java开发环境

@echo off&setlocal enabledelayedexpansion cls @echo "This script is used to registe envionment variables......" @echo. @echo. @echo. set var=%~dp0 set var=%var:~,-1% @echo "regi......

默克鱼
57分钟前
1
0
c++中友元函数理解与使用

在学习c++这一块,关于友元函数和友元类,感觉还是不好理解,但是井下心来,理解,需要把我一下几点。 首先讲友元函数。 (1)友元函数: 1)C++中引入友元函数,是为在该类中提供一个对外(除...

天王盖地虎626
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部