免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2399 | 回复: 2
打印 上一主题 下一主题

[函数] MYSQL操作函数类,绝对经典[原创] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-28 21:51 |只看该作者 |倒序浏览

#include <string.h>;
#include  "./mysql/mysql.h"
class CMySQL
{
        public:
                MYSQL        *MyConn;         //连接关键字
                MYSQL_RES    *MyRes;          //结果集
                MYSQL_ROW    MyRow;           //结果横向字段
                char         HostName[20];    //IP地址
                char         UserName[20];    //用户名
                char         Password[20];    //密码
                char         DbName[20];      //数据库名称

        //构造函数
        CMySQL();
        CMySQL(char *cHostName, char *cUserName, char *cPassword, char *cDbName)
        {
                strcpy(HostName,cHostName);
                strcpy(UserName,cUserName);
                strcpy(Password,cPassword);
                strcpy(DbName,cDbName);
        }

        //操作函数
        bool  DbConnt();   //连接函数 OP = Option
        bool  DbConnt(char *cHostName, char *cUserName, char *cPassword, char *cDbName);
        int   ResReturn(char  *SqlQuary,  int  Mode);   //查询资料(Mode = 0 是资料查询 Mode = 1 是更新查询)
        bool  GetRES();    //获取结果,之前必须执行 ResReturn 不然无法获得结果集
};
//-------------------------------------------------------------------------------------------
inline CMySQL::CMySQL()
{
}
//-------------------------------------------------------------------------------------------
inline bool CMySQL:bConnt(char *cHostName, char *cUserName, char *cPassword, char *cDbName)
{
        strcpy(HostName,cHostName);
        strcpy(UserName,cUserName);
        strcpy(Password,cPassword);
        strcpy(DbName,cDbName);
        return(DbConnt());
}
//-------------------------------------------------------------------------------------------
inline bool CMySQL:bConnt()
{
    MyConn=mysql_init(NULL);   //连接初始化
    if(MyConn == NULL)
    {
                mvwprintw(stdscr,10,10,"初始化出错,请查证后再运行";
                wrefresh(stdscr);
                wgetch(stdscr);
                return(false);
    }
    if(mysql_real_connect(MyConn,  HostName,  UserName,  Password,  DbName,  0,  NULL,  0)==NULL)
                return(false);

        if ( mysql_select_db( MyConn, DbName ) < 0 )
        {
                mvwprintw(stdscr,10,10,"没有连接到 MySQL 数据库,请检查是否正常安装";
                wrefresh(stdscr);
                wgetch(stdscr);
                return(false);
        }
    return(true);
}
//-------------------------------------------------------------------------------------------
inline int CMySQL::ResReturn(char  *SqlQuary,  int  Mode)
{
        char   str[2048];
        if (mysql_query(MyConn,SqlQuary) != 0)
        {
                if (Mode==0)
                {
                        mvwprintw(stdscr,10,10,"数据库查询语句出现毛病!请回车后继续并且记住出现的提示语!\n\n%s",SqlQuary);
                        wrefresh(stdscr);
                        wgetch(stdscr);
                        if(MyConn!=NULL)
                        {
                                mvwprintw(stdscr,10,10,"error %u (%s)\n",mysql_errno(MyConn),mysql_error(MyConn));
                                wrefresh(stdscr);
                                wgetch(stdscr);
                        }
                }
                return(-1);
        }
        mysql_free_result(MyRes);
        MyRes = mysql_store_result(MyConn);
        if (Mode == 0)
                return(MyRes->;row_count);
        return (0);
}
//-------------------------------------------------------------------------------------------
inline bool CMySQL::GetRES()
{
        if ((MyRow = mysql_fetch_row(MyRes))!=NULL)
                return(true);
        return(false);
}
//-------------------------------------------------------------------------------------------


再提供一个使用例子
class  Cjjxz
{
        public:

                //类变量
                char   cSQLQuary[200];  //更新语句
                char   XYSBH[5];        //信用社编号
                short  JJXZBH;          //贷款经济性质
                char   JJXZMC[31];      //贷款经济性质名称

                //构造函数
                Cjjxz(char  *XYS);
               
                //操作函数
                void    INIT();                                       //初始化这个类
                int     GetMAXNumber(CMySQL  *Msql);     //得到最大号
                bool    InsertDB(CMySQL  *Msql);         //插入记录
                bool    UpdateDB(CMySQL  *Msql);         //更新记录
                bool    DeleteDB(CMySQL  *Msql, long  INDEX); //删除记录
                bool    LoadDB(CMySQL  *Msql, long  INDEX);   //从数据库中读取记录
                bool    LoadFromROW(MYSQL_ROW  row);          //程序给出的ROW中读取记录
};
//-------------------------------------------------------------------------------------------
inline Cjjxz::Cjjxz(char  *XYS)
{
//        strcpy(XYSBH,XYS);
        INIT();
}
//-------------------------------------------------------------------------------------------
inline void Cjjxz::INIT()
{
        JJXZBH = 0;                //贷款经济性质
        strcpy(JJXZMC,"XXXXXX";   //贷款经济性质名称
}
//-------------------------------------------------------------------------------------------
inline bool Cjjxz::InsertDB(CMySQL  *Msql)
{
        sprintf(cSQLQuary,"insert into jjxz (JJXZBH) values(%d)",JJXZBH);
        if(Msql->;ResReturn(cSQLQuary,1)!=0)
                return(false);

        sprintf(cSQLQuary,"update jjxz set JJXZMC = '%s' where JJXZBH = %d",
                                           JJXZMC,             JJXZBH);
        if(Msql->;ResReturn(cSQLQuary,1)!=0)
                return(false);
        return(true);
}
//-------------------------------------------------------------------------------------------
inline bool Cjjxz::UpdateDB(CMySQL  *Msql)
{
        sprintf(cSQLQuary,"update jjxz set JJXZMC = '%s' where JJXZBH = %d",
                                           JJXZMC,             JJXZBH);
        if(Msql->;ResReturn(cSQLQuary,1)!=0)
                return(false);
        return(true);
}
//-------------------------------------------------------------------------------------------
inline bool Cjjxz:eleteDB(CMySQL  *Msql, long  INDEX = -1)
{
        if (INDEX>;=0)
                sprintf(cSQLQuary,"delete from jjxz where JJXZBH = %d",INDEX);
        else
                sprintf(cSQLQuary,"delete from jjxz where JJXZBH = %d",JJXZBH);
        if(Msql->;ResReturn(cSQLQuary,1)!=0)
                return(false);
        return(true);
}
//-------------------------------------------------------------------------------------------
inline bool Cjjxz::LoadDB(CMySQL  *Msql, long  INDEX)
{
        sprintf(cSQLQuary,"select JJXZBH,JJXZMC from jjxz where JJXZBH = %d",INDEX);
        if(Msql->;ResReturn(cSQLQuary,0)<=0)
                return(false);
        Msql->;GetRES();
        JJXZBH = atoi(Msql->;MyRow[0]);  //编号
        strcpy(JJXZMC,Msql->;MyRow[1]);  //名称
        return(true);
}
//-------------------------------------------------------------------------------------------

论坛徽章:
0
2 [报告]
发表于 2004-03-29 08:09 |只看该作者

MYSQL操作函数类,绝对经典[原创]

鼓励原创,呵呵

论坛徽章:
0
3 [报告]
发表于 2004-03-29 13:28 |只看该作者

MYSQL操作函数类,绝对经典[原创]

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP