- 论坛徽章:
- 0
|
#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);
}
//------------------------------------------------------------------------------------------- |
|