这里归纳了C API可使用的函数

函数

描述

mysql_affected_rows()

返回上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。

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语句的告警数。

做了下简单的封装

头文件

 #ifndef __MYMYSQL_H__
#define __MYMYSQL_H__
#include <WinSock2.h>
#include <mysql.h>
#pragma comment(lib,"libmysql.lib")
#define SZCHARSIZE 100
typedef struct _tagMysqlInfo
{
char host[SZCHARSIZE]; //主机
char user[SZCHARSIZE]; //用户名
char passwd[SZCHARSIZE]; //密码
char db[SZCHARSIZE]; //数据库
UINT port; //端口号
char unix_socket[SZCHARSIZE]; //如果unix_socket不是NULL,该字符串描述了应使用的套接字或命名管道。注意,“host”参数决定了连接的类型。
DWORD client_flag; // client_flag的值通常为0
}MYSQLINFO,*PMYSQLINFO;
class CMyMysql
{
public:
CMyMysql(void);
BOOL connect(const MYSQLINFO); //连接成功返回true 失败返回false
BOOL query(const char*); //查询mysql语句
my_ulonglong GetresultLine(); //获取查询到的行数
MYSQL* GetMysqlPtr(); //获取mysql指针
MYSQL_RES* GetMysqlresPtr(); //获取mysqlres指针
~CMyMysql(void);
private:
MYSQL* m_mYsqlPtr; //mysql 指针
MYSQL_RES* m_mYsqlres; //mysql 结果集指针
};
#endif //__MYMYSQL_H__

cpp文件

 #include "MyMysql.h"

 CMyMysql::CMyMysql(void)
:m_mYsqlPtr(NULL)
{
m_mYsqlPtr = mysql_init(NULL);
} CMyMysql::~CMyMysql(void)
{
if (m_mYsqlPtr)
mysql_close(m_mYsqlPtr);
if (m_mYsqlres)
mysql_free_result(m_mYsqlres);
}
BOOL CMyMysql::connect(const MYSQLINFO mysqlInfo)
{
if(!mysql_real_connect(m_mYsqlPtr,mysqlInfo.host,mysqlInfo.user,mysqlInfo.passwd,mysqlInfo.db,mysqlInfo.port,mysqlInfo.unix_socket,mysqlInfo.client_flag))
return FALSE;
else
return TRUE;
}
BOOL CMyMysql::query(const char* szSql)
{
if(!strlen(szSql))return FALSE;
if(mysql_query(m_mYsqlPtr,szSql))
return FALSE;
else
return TRUE;
}
my_ulonglong CMyMysql::GetresultLine()
{
m_mYsqlres = mysql_store_result(m_mYsqlPtr);
if(!m_mYsqlres)return NULL;
return mysql_num_rows(m_mYsqlres);
}
MYSQL* CMyMysql::GetMysqlPtr()
{
return m_mYsqlPtr;
}
MYSQL_RES* CMyMysql::GetMysqlresPtr()
{
return m_mYsqlres;
}

简单的调用例子用的MFC

 void CMysqlDemoDlg::OnBnClickedButton1()
{
CMyMysql * mYSQL = new CMyMysql();
MYSQLINFO mysqlInfo;
ZeroMemory(&mysqlInfo,sizeof(MYSQLINFO));
CopyMemory(mysqlInfo.host,"localhost",_tcslen("localhost"));
CopyMemory(mysqlInfo.user,"root",_tcslen("root"));
CopyMemory(mysqlInfo.passwd,"",_tcslen(""));
mysqlInfo.port =;
if (!mYSQL->connect(mysqlInfo))
{
AfxMessageBox("连接数据库失败!\r\n");
delete mYSQL;
return ;
}
if (mysql_set_character_set(mYSQL->GetMysqlPtr(),"gbk"))
{
AfxMessageBox("设置默认字符失败!\r\n");
delete mYSQL; }
if (mysql_select_db(mYSQL->GetMysqlPtr(),"ecshop"))
{
AfxMessageBox("选择数据库失败!\r\n");
delete mYSQL;
}
if(!mYSQL->query("select * from ecs_admin_user;"))
{
AfxMessageBox("查询失败!\r\n");
delete mYSQL;
}
my_ulonglong Line = mYSQL->GetresultLine();
MYSQL_FIELD* fd = NULL;
CString str;
while (fd = mysql_fetch_field(mYSQL->GetMysqlresPtr()))
{
str+= fd->name;
str+="\r\n";
}
SetDlgItemText(IDC_EDIT1,str);
MYSQL_ROW rows;
str = "";
UINT listSize = mysql_num_fields(mYSQL->GetMysqlresPtr());
while(rows = mysql_fetch_row(mYSQL->GetMysqlresPtr()))
{
for (UINT i = ;i<listSize;i++)
{
str+= rows[i];
}
str+="\r\n";
}
SetDlgItemText(IDC_EDIT2,str);
delete mYSQL;
}

vc调用mysql数据库操作例子的更多相关文章

  1. php MySQL数据库操作类源代码

    php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...

  2. 设计模式 - 单例模式mysql数据库操作类

    待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...

  3. VC与ADO数据库操作

    VC与ADO数据库操作 学研部的同志们,大家好! 想开一次学习会,实习时间冲突了,只好把文档发给大家看了.重点推荐李振龙的BMP读图教程! 尤其是大三GIS班的同志,注意了,可能实习用得上的! 一.A ...

  4. Python/MySQL(四、MySQL数据库操作)

    Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: case when id>9 then ture else false 二.三元运算: if(isnull(xx)0, ...

  5. 新手学python(2):C语言调用完成数据库操作

    继续介绍本人的python学习过程.本节介绍如何利用python调用c代码.内容还是基于音乐信息提取的过程,架构如图一.Python调用c实现的功能是利用python访问c语言完成mysql数据库操作 ...

  6. Java通过JDBC 进行MySQL数据库操作

    转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...

  7. Python进行MySQL数据库操作

    最近开始玩Python,慢慢开始喜欢上它了,以前都是用shell来实现一些自动化或者监控的操作,现在用Python来实现,感觉更棒,Python是一门很强大的面向对象语言,所以作为一个运维DBA或者运 ...

  8. 使用C语言调用mysql数据库编程实战以及技巧

    今天编写使用C语言调用mysql数据库编程实战以及技巧.为其它IT同行作为參考,当然有错误能够留言,共同学习. 一.mysql数据库的C语言经常使用接口API 1.首先当然是链接数据库mysql_re ...

  9. (转载)常用的Mysql数据库操作语句大全

    打开CMD,进入数据库命令:mysql -hlocalhost -uroot -p 退出数据库:exit 用户管理: 1.新建用户: >CREATE USER name IDENTIFIED B ...

随机推荐

  1. Java练习 SDUT-3422_小金问呀问不会问题

    小金问呀问不会问题 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 众所周知,C语言的学习是我们程序设计基础的重点和主要 ...

  2. Oracle函数——TO_DATE

    TO_DATE 含义:将具有固定格式的字符串类型的数据转化为相对应的Date类型数据,官网解释如下图   使用方法 TO_DATE("需要转换的字符串","日期格式&qu ...

  3. pytorch旧版安装

    https://pytorch.org/get-started/previous-versions 可以直接下载文件 用 pip 直接在下载目录安装就可以了

  4. PyTorch代码调试利器: 自动print每行代码的Tensor信息

    本文介绍一个用于 PyTorch 代码的实用工具 TorchSnooper.作者是TorchSnooper的作者,也是PyTorch开发者之一. GitHub 项目地址: https://github ...

  5. ExecutorService小试牛刀

    现在的项目中有将学生批量加入课程的需求,于是想根据这个需求测试一下ExecutorService的效率.假设一个场景:现在有100门课,1500名学生,要求每15个人加入一门课程,不重复. 查询并拼接 ...

  6. day2_python之文件操作

    一.文件常用操作 #1. 打开文件的模式有(默认为文本模式): r ,只读模式[默认模式,文件必须存在,不存在则抛出异常] w,只写模式[不可读:不存在则创建:存在则清空内容] a, 之追加写模式[不 ...

  7. 在对文件进行随机读写,RandomAccessFile类,如何提高其效率

    花1K内存实现高效I/O的RandomAccessFile类 JAVA的文件随机存取类(RandomAccessFile)的I/O效率较低.通过分析其中原因,提出解决方案.逐步展示如何创建具备缓存读写 ...

  8. ACM学习网站、

    转载:http://www.cnblogs.com/zhourongqing/archive/2012/05/24/2516180.html http://61.187.179.132/JudgeOn ...

  9. HDU 5463

    题意:一个盒子有36个格子.每个格子可以装64个物品,搬运一个箱子是一次搬运,问最少到搬运次数 思路:直接求总需要多少个格子,然后去求盒子,这里求盒子呢有个小技巧,就是用ceil函数 #include ...

  10. tf.contrib.layers.xavier_initializer

    https://blog.csdn.net/yinruiyang94/article/details/78354257xavier_initializer( uniform=True, seed=No ...