vc调用mysql数据库操作例子
这里归纳了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数据库操作例子的更多相关文章
- php MySQL数据库操作类源代码
php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...
- 设计模式 - 单例模式mysql数据库操作类
待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...
- VC与ADO数据库操作
VC与ADO数据库操作 学研部的同志们,大家好! 想开一次学习会,实习时间冲突了,只好把文档发给大家看了.重点推荐李振龙的BMP读图教程! 尤其是大三GIS班的同志,注意了,可能实习用得上的! 一.A ...
- Python/MySQL(四、MySQL数据库操作)
Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: case when id>9 then ture else false 二.三元运算: if(isnull(xx)0, ...
- 新手学python(2):C语言调用完成数据库操作
继续介绍本人的python学习过程.本节介绍如何利用python调用c代码.内容还是基于音乐信息提取的过程,架构如图一.Python调用c实现的功能是利用python访问c语言完成mysql数据库操作 ...
- Java通过JDBC 进行MySQL数据库操作
转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...
- Python进行MySQL数据库操作
最近开始玩Python,慢慢开始喜欢上它了,以前都是用shell来实现一些自动化或者监控的操作,现在用Python来实现,感觉更棒,Python是一门很强大的面向对象语言,所以作为一个运维DBA或者运 ...
- 使用C语言调用mysql数据库编程实战以及技巧
今天编写使用C语言调用mysql数据库编程实战以及技巧.为其它IT同行作为參考,当然有错误能够留言,共同学习. 一.mysql数据库的C语言经常使用接口API 1.首先当然是链接数据库mysql_re ...
- (转载)常用的Mysql数据库操作语句大全
打开CMD,进入数据库命令:mysql -hlocalhost -uroot -p 退出数据库:exit 用户管理: 1.新建用户: >CREATE USER name IDENTIFIED B ...
随机推荐
- Python3:ImportError: No module named 'compiler.ast'
from compiler.ast import flatten 上面这条语句好像在python3 以后就废除了,如果使用的话就会报错.Traceback (most recent call last ...
- [转]安卓加固之so文件加固
一.前言 最近在学习安卓加固方面的知识,看到了jiangwei212的博客,其中有对so文件加固的两篇文章通过节加密函数和通过hash段找到函数地址直接加密函数,感觉写的特别好,然后自己动手实践探索s ...
- spark mllib docs,MLlib: RDD-based API
MLlib: RDD-based API This page documents sections of the MLlib guide for the RDD-based API (the spar ...
- java一维数组的声明与初始化
一维数组:可以理解为一列多行.类型相同的数据,其中每个数据被称为数组元素: 一维数组的声明方式: type varName[]; 或 type[] varName;(推荐) Eg:int age[]; ...
- HDU 2871"Memory Control"(线段树区间和并+set.lower_bound)
传送门 •题意 有 n 个内存单元(编号从1开始): 给出 4 种操作: (1)Reset :表示把所有的内存清空,然后输出 "Reset Now". (2)New x :表示申请 ...
- vue通信、传值的方式
原文博主地址:https://blog.csdn.net/qq_35430000/article/details/79291287 看完还是受益匪浅,讲得很详细..感谢!
- P1022 绵羊排序
题目描述 聪聪想要给他家农场里的 \(n\) 只绵羊按照品质从高到低进行排序. 农场里的 \(n\) 只绵羊编号从 \(1\) 到 \(n\) ,第 \(i\) 只绵羊的体重为 \(w_i\) ,高度 ...
- 2018-9-2-WPF-开发自动删除软件
title author date CreateTime categories WPF 开发自动删除软件 lindexi 2018-09-02 14:51:48 +0800 2018-08-09 09 ...
- 2019-11-17-dotnet-core-使用-GBK-编码
title author date CreateTime categories dotnet core 使用 GBK 编码 lindexi 2019-11-17 16:36:27 +0800 2019 ...
- Vscode 开发插件
vs常用公共插件 Auto Close Tag 自动闭合标签 Auto Rename Tag 自动重命名标签 AutoFileName 自动联想文件名 Autoprefixer 自动兼容前缀 Auto ...