一、mysql API环境
1、头文件:
mysql自带的include目录,几个主要头文件:
mysql.h
my_alloc.h
mysql_com.h
mysql_version.h
2、动态库、静态库:
libmySQL.dll
libmysql.lib
二、以下为调用mysql API访问数据库的基本步骤
第一步:连接数据库
// 初始化
m_hdbHost = mysql_init(NULL);
if (m_hdbHost == NULL)
{
return false;
}
// 连接主机
if (mysql_real_connect(m_hdbHost, pszHostName, pszUser, pszPassword, NULL, nPort, NULL, 0) == NULL)
{
mysql_close(m_hdbHost);
m_hdbHost = NULL;
return false;
}
第二步:查询数据库列表
MYSQL_RES* pRes = mysql_list_dbs(m_hdbHost, NULL);
if (pRes == NULL)
{
return false;
}
UINT unFieldCount = mysql_num_fields(pRes);
UINT unRowsCount = mysql_num_rows(pRes);
MYSQL_FIELD* fields = NULL;
MYSQL_ROW pRow = NULL;
fields = mysql_fetch_field(pRes);
for (int i=0; i
{
mysql_data_seek(pRes, i);
pRow = mysql_fetch_row(pRes);
if (pRow)
{
char* pszDBName = pRow[0];
if (pszDBName)
{
// 数据库名称pszDBName
}
}
}
mysql_free_result(pRes);
第三步:选择数据库
int nRet = mysql_select_db(m_hdbHost, m_szDBName);
if (nRet != 0)
{
return false;
}
第四步:查询数据库表名称
MYSQL_RES* pRes = mysql_list_tables(m_hdbHost, NULL);
if (pRes == NULL)
{
return false;
}
UINT unFieldCount = mysql_num_fields(pRes);
UINT unRowsCount = mysql_num_rows(pRes);
MYSQL_FIELD* fields = NULL;
MYSQL_ROW pRow = NULL;
fields = mysql_fetch_field(pRes);
for (int i=0; i
{
mysql_data_seek(pRes, i);
pRow = mysql_fetch_row(pRes);
if (pRow)
{
char* pszTableName = pRow[0];
if (pszTableName)
{
//表名称pszTableName
}
}
}
mysql_free_result(pRes);
第五步:查询数据
nRet = mysql_query(m_hdbHost, pszSQL);
if (nRet != 0)
{
return false;
}
MYSQL_RES* pRes = mysql_store_result(m_hdbHost);
if (pRes == NULL)
{
return false;
}
UINT unFieldCount = mysql_num_fields(pRes);
UINT unRowsCount = mysql_num_rows(pRes);
MYSQL_FIELD* fields = NULL;
MYSQL_ROW pRow = NULL;
// 字段名称
fields = mysql_fetch_field(pRes);
for (i=0; i
{
//字段名称fields[i].name
}
// 数据
for (i=0; i
{
mysql_data_seek(pRes, i);
pRow = mysql_fetch_row(pRes);
if (pRow)
{
char* pszDBName = pRow[0];
for (int j=0; j