C++操作Mysql数据库 连接

//连接数据库
BOOL CMySqlDB::StartConnection() {
try { if ((m_mysqlDB = mysql_init(nullptr)) == nullptr) { return FALSE; } if (m_mysqlDB == nullptr) { return FALSE; } if(0 != mysql_options(m_mysqlDB, MYSQL_SET_CHARSET_NAME, "gb2312")) //设置额外的连接选项,并影响连接的行为 { return FALSE; } if (mysql_real_connect(m_mysqlDB,m_Host,m_User,m_LoginSec,m_DBName,m_Port,NULL,0)) { //ASSERT(AfxMessageBox(_T("欢迎进入数据库!"))); } else { ASSERT(AfxMessageBox(_T("无法连接数据库!请检查mySQL Server是否已启动!"))); return FALSE; } return TRUE; } catch(_com_error e) { MessageBox(::AfxGetMainWnd()->m_hWnd,e.Description(),_T("数据库连接失败!"),MB_OKCANCEL|MB_ICONEXCLAMATION); return FALSE; } }

停止数据库连接

 void CMySqlDB::StopConnection() { mysql_close(m_mysqlDB); m_mysqlDB = nullptr; } 

数据库操作--查询

//数据库的连接为短连接
BOOL CMySqlDB::Query(CString &info)
{
    try
    {
        if (m_mysqlDB == nullptr && !StartConnection())
            return FALSE;

        CStringA sqlt(info.GetBuffer(info.GetLength()));
        info.ReleaseBuffer();
        sqlt += _T("\0");
        const char*sqlstr = sqlt.GetBuffer();
        sqlt.ReleaseBuffer();
        if (mysql_real_query(m_mysqlDB, sqlstr, static_cast<unsigned long>(strlen(sqlstr))))
        {
            string s(mysql_error(m_mysqlDB));
            return FALSE;
        }
        return TRUE;
    }
    catch(_com_error e)
    {
        MessageBox(::AfxGetMainWnd()->m_hWnd,e.Description(),_T("数据库操作错误"),MB_ICONERROR);
        return FALSE;
    }
}

获取操作错误

CString CMySqlDB::GetError()
{
    return CString(mysql_error(m_mysqlDB));
}

获取数据库DB

MYSQL* CMySqlDB::GetMYSQL()
{
    return m_mysqlDB;
}

判断数据库是否存在

//这里得到的是表是否为空的判断结果
BOOL CMySqlDB::IsExisted(CString &info)
{
    if (Query(info))                                                    //先查询,再检查结果
    {
        MYSQL_RES *result = mysql_store_result(m_mysqlDB);
        if (result)
        {
            unsigned long long row = result->row_count;
            if (row)
            {
                mysql_free_result(result);
                return TRUE;
            }
        }
        mysql_free_result(result);
        return FALSE;
    }
    else
        return FALSE;
}

 

posted @ 2016-10-23 19:54  Go柱oD  阅读(195)  评论(0编辑  收藏  举报