一般C/C++与数据库相连有两种方法。
利用ODBC,ADO,或者JDBC
用ODBC,ADO,JDBC等这些接口,利用里面的方法来进行与数据库的连接,简化对数据库的操作,方便对数据库进行管理。
接口的区别可以参考以下文章
http://blog.csdn.net/wildboy2001/article/details/8582860
https://www.cnblogs.com/renzhezhiye/archive/2013/02/19/2917217.html
不过注意的是C/C++也可以用JDBC来与数据库相连接,不过很别扭而已。
数据库相关API连接
第一种方法,除了安装所需的数据库之外,还需要安装相对应的接口,就是上面所说的各种接口,才能使用该方法。
第二种方法,就不同了,直接安装相应的数据库就行了,然后利用开发商所给的API函数方法来进行调用和操作数据表中的数据。
相关API到相应的数据库官网有。
1、为工程附加目录,将MySQL Server xx/include文件添加,我这是VS2015
然后再将MySQL Server xx/lib下的libmysql.dll和libmysql.lib复制到我们工程项目文件下
连接所需要的头文件和库
#include <winsock.h> //注意这两个头文件的次序不能放错
#include "mysql.h"
#pragma comment(lib,"libmysql.lib")
连接数据库
#include <winsock.h>
#include "mysql.h"
#pragma comment(lib,"libmysql.lib")
int main()
{
MYSQL m_sqlConnect; //数据源指针
mysql_init(&m_sqlConnect);
/* 主机IP
用户
密码
数据库
端口
套接字
客户端标识
无
*/
if(!mysql_real_connect(&m_sqlConnect,"localhost","root","asfd21","mysql",3306,NULL,0)
return false;
...
...
mysql_close(&m_sqlConnect); //关闭数据库
}
附加一些从其他博客看到常用的API接口:
mysql_affected_rows() 返回被最新的UPDATE, DELETE或INSERT查询影响的行数。
mysql_close() 关闭一个服务器连接。
mysql_connect() 连接一个MySQL服务器。该函数不推荐;使用mysql_real_connect()代替。
mysql_change_user() 改变在一个打开的连接上的用户和数据库。
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_host_info() 返回一个描述连接的字符串。
mysql_get_proto_info() 返回连接使用的协议版本。
mysql_get_server_info() 返回服务器版本号。
mysql_info() 返回关于最近执行得查询的信息。
mysql_init() 获得或初始化一个MYSQL结构。
mysql_insert_id() 返回有前一个查询为一个AUTO_INCREMENT列生成的ID。
mysql_kill() 杀死一个给定的线程。
mysql_list_dbs() 返回匹配一个简单的正则表达式的数据库名。
mysql_list_fields() 返回匹配一个简单的正则表达式的列名。
mysql_list_processes() 返回当前服务器线程的一张表。
mysql_list_tables() 返回匹配一个简单的正则表达式的表名。
mysql_num_fields() 返回一个结果集合重的列的数量。
mysql_num_rows() 返回一个结果集合中的行的数量。
mysql_options() 设置对mysql_connect()的连接选项。
mysql_ping() 检查对服务器的连接是否正在工作,必要时重新连接。
mysql_query() 执行指定为一个空结尾的字符串的SQL查询。
mysql_real_connect() 连接一个MySQL服务器。
mysql_real_query() 执行指定为带计数的字符串的SQL查询。
mysql_reload() 告诉服务器重装授权表。
mysql_row_seek() 搜索在结果集合中的行,使用从mysql_row_tell()返回的值。
mysql_row_tell() 返回行光标位置。
mysql_select_db() 连接一个数据库。
mysql_shutdown() 关掉数据库服务器。
mysql_stat() 返回作为字符串的服务器状态。
mysql_store_result() 检索一个完整的结果集合给客户。
mysql_thread_id() 返回当前线程的ID。
mysql_use_result() 初始化一个一行一行地结果集合的检索。