#include "StdAfx.h"
#include "zlb_mysql.h"
namespace zlb_mysql
{
CField::CField()
{
}
CField::~CField()
{
}
bool CField::IsNum(int nNum)
{
if (IS_NUM(m_type[nNum]))
{
return true;
}
return false;
}
bool CField::IsNum(string strNum)
{
if(IS_NUM(m_type[GetField_NO(strNum)]))
{
return true;
}
return false;
}
bool CField::IsData(int nData)
{
if(
FIELD_TYPE_DATE == m_type[nData] ||
FIELD_TYPE_DATETIME == m_type[nData]
)
{
return true;
}
return false;
}
bool CField::IsData(string strData)
{
int temp;
temp=GetField_NO(strData);
if(
FIELD_TYPE_DATE == m_type[temp] ||
FIELD_TYPE_DATETIME == m_type[temp]
)
{
return true;
}
return false;
}
bool CField::IsChar(int nChar)
{
if(
m_type[nChar]==FIELD_TYPE_STRING ||
m_type[nChar]==FIELD_TYPE_VAR_STRING ||
m_type[nChar]==FIELD_TYPE_CHAR
)
{
return true;
}
return false;
}
bool CField::IsChar(string strChar)
{
int temp;
temp=this->GetField_NO(strChar);
if(
m_type[temp]==FIELD_TYPE_STRING ||
m_type[temp]==FIELD_TYPE_VAR_STRING ||
m_type[temp]==FIELD_TYPE_CHAR
)
{
return true;
}
return false;
}
bool CField::IsBlob(int nBlob)
{
if(IS_BLOB(m_type[nBlob]))
return true;
else
return false;
}
bool CField::IsBlob(string strBlob)
{
if(IS_BLOB(m_type[GetField_NO(strBlob)]))
return true;
else
return false;
}
int CField::GetField_NO(string str_Field_name)
{
for(unsigned int i=0;i<m_name.size();i++)
{
if(!m_name[i].compare(str_Field_name))
{
return i;
}
}
return -1;
}
CRecord::CRecord(CField* m_f)
{
m_field = m_f;
}
CRecord::~CRecord()
{
}
void CRecord::SetData(string value)
{
m_rs.push_back(value);
}
/* [""]操作 */
string CRecord::operator[](string str)
{
return m_rs[m_field->GetField_NO(str)];
}
string CRecord::operator[](int nNum)
{
return m_rs[nNum];
}
bool CRecord::IsNull(int nNum)
{
if("" == m_rs[nNum].c_str())
{
return true;
}
return false;
}
bool CRecord::IsNull(string str)
{
if ("" == m_rs[m_field->GetField_NO(str)].c_str())
{
return true;
}
return false;
}
/* 用 value tab value 的形式 返回结果 */
string CRecord::GetTabText()
{
string temp;
for (vector<string>::size_type i = 0; i< m_rs.size();i++)
{
temp += m_rs[i];
if(i < m_rs.size() -1)
{
temp+="\t";
}
}
return temp;
}
CRecordSet::CRecordSet()
{
m_Row = NULL;
m_pRes = NULL;
m_pos = 0;
}
CRecordSet::CRecordSet(MYSQL *hSQL)
{
m_pos = 0;
m_pRes = NULL;
m_Row = NULL;
m_pData = hSQL;
}
CRecordSet::~CRecordSet()
{
}
void CRecordSet::GetRecordSet(MYSQL *hSQL)
{
m_pData = hSQL;
}
int CRecordSet::ExecuteSQL(const char *SQL)
{
if(!mysql_real_query(m_pData,SQL,strlen(SQL)))
{
if (!m_s.empty())
{
m_s.clear();
m_field.m_name.clear();
m_field.m_type.clear();
}
m_pRes = mysql_store_result(m_pData);
m_nRecordConut = (int)mysql_num_rows(m_pRes);
m_nFieldNum = mysql_num_fields(m_pRes);
for (int x = 0; m_pFd = mysql_fetch_field(m_pRes); x++)
{
m_field.m_name.push_back(m_pFd->name);
m_field.m_type.push_back(m_pFd->type);
}
while (m_Row = mysql_fetch_row(m_pRes))
{
CRecord temp(&m_field);
for (int k = 0; k < m_nFieldNum; k++)
{
if(m_Row[k]==NULL || (!strlen(m_Row[k])))
{
temp.SetData("");
}
else
{
temp.SetData(m_Row[k]);
}
}
m_s.push_back(temp);
}
mysql_free_result(m_pRes);
return m_s.size();
}
return -1;
}
int CRecordSet::GetRecordCount()
{
return m_nRecordConut;
}
int CRecordSet::GetFieldNum()
{
return m_nFieldNum;
}
int CRecordSet::MoveNext()
{
return ++m_pos;
}
long CRecordSet::Move(long length)
{
int l = m_pos + length;
if(l < 0)
{
m_pos = 0;
return 0;
}
else
{
if (l > m_s.size())
{
m_pos = m_s.size() - 1;
return m_pos;
}
else
{
m_pos = l;
return m_pos;
}
}
}
bool CRecordSet::MoveFirst()
{
m_pos = 0;
return true;
}
bool CRecordSet::MoveLast()
{
m_pos = m_s.size() -1 ;
return true;
}
unsigned long CRecordSet::GetCurrentPos() const //const 类的成员不能被改变
{
return m_pos;
}
bool CRecordSet::GetCurrentFieldValue(const char *szFieldName,char *szValue)
{
strcpy(szValue,m_s[m_pos][szFieldName].c_str());
return true;
}
bool CRecordSet::GetCurrentFieldValue(const int nFieldNum,char *szValue)
{
strcpy(szValue,m_s[m_pos][nFieldNum].c_str());
return true;
}
bool CRecordSet::GetFieldValue(long index,const char *szFieldName,char *szValue)
{
strcpy(szValue,m_s[index][szFieldName].c_str());
return true;
}
bool CRecordSet::GetFieldValue(long index,int nFieldNum,char *szValue)
{
strcpy(szValue,m_s[index][nFieldNum].c_str());
return true;
}
/* 是否到达游标尾部 */
bool CRecordSet::IsEof()
{
return (m_pos == m_s.size()) ? true:false;
}
CField* CRecordSet::GetField()
{
return &m_field;
}
const char* CRecordSet::GetFieldName(int nNum)
{
return m_field.m_name.at(nNum).c_str();
}
const int CRecordSet::GetFieldType(char * szName)
{
int i = m_field.GetField_NO(szName);
return m_field.m_type.at(i);
}
const int CRecordSet::GetFieldType(int nNum)
{
return m_field.m_type.at(nNum);
}
CRecord CRecordSet::operator[](int nNum)
{
return m_s[nNum];
}
CDataBase::CDataBase()
{
m_pData = NULL;
}
CDataBase::~CDataBase()
{
if(NULL != m_pData)
{
DisConnect();
}
}
MYSQL* CDataBase::Get_Mysql()
{
return m_pData;
}
int CDataBase::Connect(string host,string user,
string passwd,string db,
unsigned int port,
unsigned long client_flag)
{
if (
(m_pData = mysql_init(NULL))&&
mysql_real_connect(
m_pData,host.c_str(),
user.c_str(),passwd.c_str(),
db.c_str(),port,NULL,client_flag
)
)
{
if (mysql_select_db(m_pData,db.c_str()) < 0)
{
mysql_close(m_pData);
return -1;
}
}
else
{
mysql_close(m_pData);
return -1;
}
return 0;
}
void CDataBase::DisConnect()
{
mysql_close(m_pData);
}
int CDataBase::ExecQuery(string sql)
{
if(!mysql_real_query(m_pData,sql.c_str (),(unsigned long)sql.length()) )
{
//得到受影响的行数
return (int)mysql_affected_rows(m_pData) ;
}
else
{
//执行查询失败
return -1;
}
}
int CDataBase::Ping()
{
if(!mysql_ping(m_pData))
{
return 0;
}
return -1;
}
int CDataBase::ShutDown()
{
if(!mysql_shutdown(m_pData,SHUTDOWN_DEFAULT))
{
return 0;
}
return -1;
}
int CDataBase::ReBoot()
{
if (!mysql_reload(m_pData))
{
return 0;
}
return -1;
}
int CDataBase::Start_Transaction()
{
if(
!mysql_real_query(m_pData, "START TRANSACTION" ,
(unsigned long)strlen("START TRANSACTION"))
)
{
return 0;
}
else
{
return -1;
}
}
int CDataBase::Commit()
{
if(
!mysql_real_query(m_pData, "COMMIT" ,
(unsigned long)strlen("COMMIT"))
)
{
return 0;
}
else
{
return -1;
}
}
int CDataBase::RollBack()
{
if(
!mysql_real_query(m_pData, "ROLLBACK",
(unsigned long)strlen("ROLLBACK"))
)
{
return 0;
}
else
{
return -1;
}
}
const char* CDataBase::Get_Client_Info()
{
return mysql_get_client_info();
}
const unsigned long CDataBase::Get_client_version()
{
return mysql_get_client_version();
}
const char* CDataBase::Get_Host_Info()
{
return mysql_get_host_info(m_pData);
}
const char* CDataBase::Get_Server_Info()
{
return mysql_get_server_info( m_pData );
}
const char * CDataBase::Get_CharSet_Name()
{
return mysql_character_set_name(m_pData);
}
char* CDataBase::ExecQueryGetSingValue(string SQL)
{
MYSQL_RES *res;
MYSQL_ROW row;
char *p = NULL;
if (!mysql_real_query(m_pData,SQL.c_str(),(unsigned long)SQL.length()))
{
res = mysql_store_result(m_pData);
row = mysq
mysql访问类 c++封装,linux平台和windows平台下都可用
5星 · 超过95%的资源 需积分: 49 75 浏览量
2012-11-27
09:23:34
上传
评论 2
收藏 4KB RAR 举报
LBFing
- 粉丝: 2
- 资源: 11
最新资源
- Screenshot_20240427_031602.jpg
- 网页PDF_2024年04月26日 23-46-14_QQ浏览器网页保存_QQ浏览器转格式(6).docx
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
- 5
前往页