请文大家对数据库更新查改?又好用的类嘛? 请问大家对数据库更新查改我都是写一个sql语句,然后$link->query($sql);请问对数据库的梗删查改,是不是也可以用类啊?又好用的类嘛?发一个啊!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以删除和更新操作都可以用你现在的这个类的query方法 #include "CDBMysql.h"#include <assert.h>/*构造函数,设定连接的服务器,用户名,密码和端口*/DBMysql::DBMysql(string host,string user,string password,unsigned int port){ mysql = mysql_init(NULL); num = 0; error=""; query=""; result = NULL; SetConnect(host,user,password,port);}DBMysql::DBMysql(){}/*设定连接的服务器,用户名,密码和端口*/void DBMysql::SetConnect(string host,string user,string password,unsigned int port){ DBMysql::host = host; DBMysql::user = user; DBMysql::password = password; DBMysql::port = port;}/*设定自动重动重连*/void DBMysql::AutoReconnect(int autorcnt){ m_autoreconnect = autorcnt;}/*连接数据库*/unsigned int DBMysql::DBConnect(){ MYSQL *con; if(mysql == NULL) { error = "初始化mysql错误"; return 1; } AutoReconnect(); mysql_options(mysql, MYSQL_OPT_RECONNECT, &m_autoreconnect); con = mysql_real_connect(mysql,host.c_str(),user.c_str(),password.c_str(),NULL,port,NULL,0); if(con == NULL) { error=mysql_error(mysql); return mysql_errno(mysql); } return 0;}/*选择一个数据库*/unsigned int DBMysql::DBSelect(string database){ unsigned int re; if( mysql == NULL) return 1; db = database; re = mysql_select_db(mysql,db.c_str()); if(re != 0) { error+=mysql_error(mysql); } return re;}/*设定sql语句*/void DBMysql::SetQuery(string q){ //assert(!q.empty()); if(result != NULL ) { mysql_free_result(result); } query = q;}/*执行sql语句*/unsigned int DBMysql::DBQuery(){ unsigned int re; if( mysql == NULL) return 1; //assert(!query.empty()); re = mysql_query(mysql,query.c_str()); if(re == 0) { result = mysql_store_result(mysql); num = mysql_affected_rows(mysql); info.clear(); arrInfo.clear(); fields.clear(); } else { re = mysql_errno(mysql); error = mysql_error(mysql); cout<<error<<endl; } return re;}/*获取查询得到的一条结果*/strMap DBMysql::GetInfo(){ MYSQL_ROW row; unsigned int i; assert(mysql != NULL); if(info.size() > 0) return info; if(result != NULL) { GetFields(); row = mysql_fetch_row(result); if(row != NULL) { for(i=0;i<fields.size();i++) { info[fields[i]] = (char*)row[i]; } } //mysql_free_result(result); } return info;}/*获取查询得到的所有结果*/vector<strMap> DBMysql::GetArray(){ MYSQL_ROW row; unsigned int i; strMap tmp; assert(mysql != NULL); if(arrInfo.size() > 0) return arrInfo; if(result != NULL) { GetFields(); while(row = mysql_fetch_row(result)) { if(row != NULL) { for(i=0;i<fields.size();i++) { tmp[fields[i]] = (char *)row[i]; } arrInfo.push_back(tmp); } } } return arrInfo;}/*获取sql语句执行影响的行数*/unsigned long DBMysql::GetNum(){ return num;}/*获取插入后的id号*/unsigned long DBMysql::GetLastID(){ return mysql_insert_id(mysql);}/*向数据库插入数据*/unsigned int DBMysql::InsertData(string table,strMap *data){ strMap::const_iterator iter; string fields,q1; int flag=0; assert(mysql != NULL); assert(!table.empty()); assert(data != NULL); char tmp[102400]; string val = ""; for(iter = data->begin();iter!= data->end();iter++) { bzero(tmp,102400); mysql_real_escape_string(mysql,tmp,(iter->second).c_str(),(iter->second).length()); if(flag == 0) { fields += iter->first; val += "'"; val += tmp; val += "'"; flag = 1; } else { fields += ","; val += ","; fields += iter->first; val += "'"; val += tmp; val += "'"; } } q1 = "insert into "; q1+=table; q1 += " ("; q1 += fields; q1 += ") values ("; q1 += val; q1 += ")"; SetQuery(q1); return DBQuery();}/*根据条件修改数据*/unsigned int DBMysql::UpdateData(string table,strMap *data,string condition){ strMap::const_iterator iter; string q1; int flag=0; assert(mysql != NULL); assert(!table.empty()); assert(data != NULL); for(iter = data->begin();iter!= data->end();iter++) { if(flag == 0) { q1 = "update "; q1+=table; q1+=" set "; q1+=iter->first; q1+="="; q1+=iter->second; q1+=""; flag++; } else { q1+=","; q1+=iter->first; q1+="="; q1+=iter->second; q1+=""; } } if(!condition.empty()) { q1+=" where "; q1+=condition; } SetQuery(q1); return DBQuery();}/*根据条件删除数据*/unsigned int DBMysql::DeleteData(string table,string condition){ string q; assert(mysql != NULL); assert(!table.empty()); q="delete from "; q+=table; if(!condition.empty()) { q+=" where "; q+=condition; } SetQuery(q); return DBQuery();}/*获取返回的错误信息*/string DBMysql::GetError(){ return error;}/*返回查询后的列值*/vector<string> DBMysql::GetFields(){ /* field = mysql_fetch_fields(result); 然后通过field[i].name访问在此有错误,不知道为什么,可能是mysql的bug */ MYSQL_FIELD *field; assert(mysql != NULL); if(fields.size()>0) return fields; while(field = mysql_fetch_field(result)) { fields.push_back(field->name); } return fields;}/*析构函数*/DBMysql::~DBMysql(){ if(result != NULL) mysql_free_result(result); fields.clear(); error=""; info.clear(); db=""; arrInfo.clear(); mysql_close(mysql);}void DBMysql::SetCharset(string charset){ charset = "set names "+charset; mysql_query(mysql,charset.c_str());} php中写oracle sql语句 PHP JQUERY AJAX如何实现多行列表修改删除 正则表达式提问 请问php代码高亮怎么弄,我在别人blog见过。 php如何处理这样子的类似于数组的东西。 急!!100分求网站推广软件和注册码!在线等 这个是什么错误?? 一个表单问题 问一sql语句,help 织梦城市分站插件,后台要修改哪里的代码啊 ? 两个while循环怎么实现 数据库latin1_swedish_ci 怎么显示?
#include "CDBMysql.h"
#include <assert.h>
/*构造函数,设定连接的服务器,用户名,密码和端口*/
DBMysql::DBMysql(string host,string user,string password,unsigned int port)
{
mysql = mysql_init(NULL);
num = 0;
error="";
query="";
result = NULL;
SetConnect(host,user,password,port);
}
DBMysql::DBMysql()
{
}
/*设定连接的服务器,用户名,密码和端口*/
void DBMysql::SetConnect(string host,string user,string password,unsigned int port)
{
DBMysql::host = host;
DBMysql::user = user;
DBMysql::password = password;
DBMysql::port = port;
}/*
设定自动重动重连
*/
void DBMysql::AutoReconnect(int autorcnt)
{
m_autoreconnect = autorcnt;
}/*连接数据库*/
unsigned int DBMysql::DBConnect()
{
MYSQL *con;
if(mysql == NULL)
{
error = "初始化mysql错误";
return 1;
}
AutoReconnect();
mysql_options(mysql, MYSQL_OPT_RECONNECT, &m_autoreconnect);
con = mysql_real_connect(mysql,host.c_str(),user.c_str(),password.c_str(),NULL,port,NULL,0);
if(con == NULL)
{
error=mysql_error(mysql);
return mysql_errno(mysql);
}
return 0;
}
/*选择一个数据库*/
unsigned int DBMysql::DBSelect(string database)
{
unsigned int re;
if( mysql == NULL) return 1;
db = database;
re = mysql_select_db(mysql,db.c_str());
if(re != 0)
{
error+=mysql_error(mysql);
}
return re;
}
/*设定sql语句*/
void DBMysql::SetQuery(string q)
{ //assert(!q.empty());
if(result != NULL )
{
mysql_free_result(result);
}
query = q;
}
/*执行sql语句*/
unsigned int DBMysql::DBQuery()
{
unsigned int re;
if( mysql == NULL) return 1;
//assert(!query.empty());
re = mysql_query(mysql,query.c_str());
if(re == 0)
{
result = mysql_store_result(mysql);
num = mysql_affected_rows(mysql);
info.clear();
arrInfo.clear();
fields.clear();
}
else
{
re = mysql_errno(mysql);
error = mysql_error(mysql);
cout<<error<<endl;
}
return re;
}
/*获取查询得到的一条结果*/
strMap DBMysql::GetInfo()
{
MYSQL_ROW row;
unsigned int i;
assert(mysql != NULL);
if(info.size() > 0) return info;
if(result != NULL)
{
GetFields();
row = mysql_fetch_row(result);
if(row != NULL)
{
for(i=0;i<fields.size();i++)
{
info[fields[i]] = (char*)row[i];
}
}
//mysql_free_result(result);
}
return info;
}
/*获取查询得到的所有结果*/
vector<strMap> DBMysql::GetArray()
{
MYSQL_ROW row;
unsigned int i;
strMap tmp;
assert(mysql != NULL);
if(arrInfo.size() > 0) return arrInfo;
if(result != NULL)
{
GetFields();
while(row = mysql_fetch_row(result))
{
if(row != NULL)
{
for(i=0;i<fields.size();i++)
{
tmp[fields[i]] = (char *)row[i];
}
arrInfo.push_back(tmp);
}
}
}
return arrInfo;
}/*获取sql语句执行影响的行数*/
unsigned long DBMysql::GetNum()
{
return num;
}
/*获取插入后的id号*/
unsigned long DBMysql::GetLastID()
{
return mysql_insert_id(mysql);
}/*向数据库插入数据*/
unsigned int DBMysql::InsertData(string table,strMap *data)
{
strMap::const_iterator iter;
string fields,q1;
int flag=0;
assert(mysql != NULL);
assert(!table.empty());
assert(data != NULL); char tmp[102400];
string val = ""; for(iter = data->begin();iter!= data->end();iter++)
{
bzero(tmp,102400);
mysql_real_escape_string(mysql,tmp,(iter->second).c_str(),(iter->second).length());
if(flag == 0)
{
fields += iter->first;
val += "'";
val += tmp;
val += "'";
flag = 1;
}
else
{
fields += ",";
val += ",";
fields += iter->first;
val += "'";
val += tmp;
val += "'"; }
}
q1 = "insert into ";
q1+=table;
q1 += " (";
q1 += fields;
q1 += ") values (";
q1 += val;
q1 += ")";
SetQuery(q1);
return DBQuery();
}
/*根据条件修改数据*/
unsigned int DBMysql::UpdateData(string table,strMap *data,string condition)
{
strMap::const_iterator iter;
string q1;
int flag=0;
assert(mysql != NULL);
assert(!table.empty());
assert(data != NULL);
for(iter = data->begin();iter!= data->end();iter++)
{
if(flag == 0)
{
q1 = "update ";
q1+=table;
q1+=" set ";
q1+=iter->first;
q1+="=";
q1+=iter->second;
q1+="";
flag++;
}
else
{
q1+=",";
q1+=iter->first;
q1+="=";
q1+=iter->second;
q1+="";
}
}
if(!condition.empty())
{
q1+=" where ";
q1+=condition;
}
SetQuery(q1);
return DBQuery();
}
/*根据条件删除数据*/
unsigned int DBMysql::DeleteData(string table,string condition)
{
string q;
assert(mysql != NULL);
assert(!table.empty());
q="delete from ";
q+=table;
if(!condition.empty())
{
q+=" where ";
q+=condition;
}
SetQuery(q);
return DBQuery();
}/*获取返回的错误信息*/
string DBMysql::GetError()
{
return error;
}/*返回查询后的列值*/
vector<string> DBMysql::GetFields()
{
/*
field = mysql_fetch_fields(result);
然后通过field[i].name访问在此有错误,不知道为什么,可能是mysql的bug
*/
MYSQL_FIELD *field;
assert(mysql != NULL);
if(fields.size()>0) return fields;
while(field = mysql_fetch_field(result))
{
fields.push_back(field->name);
}
return fields;
}/*析构函数*/
DBMysql::~DBMysql()
{
if(result != NULL)
mysql_free_result(result);
fields.clear();
error="";
info.clear();
db="";
arrInfo.clear();
mysql_close(mysql);
}void DBMysql::SetCharset(string charset)
{ charset = "set names "+charset;
mysql_query(mysql,charset.c_str());
}