CRdbOp类

Keep Open and Learning
星际浪子
Posts: 3597
Joined: 01 May 2009 23:45

CRdbOp类

Post by 星际浪子 » 28 Jul 2010 10:45

1.insert

CRdbOp rdbop(CRdbOp::Direct);
CSql* pSql = rdbop.createSQL();
if ( !pSql )
return FALSE;
int ret;
pSql->setOperate( CSql::OP_Insert );
pSql->setTableName( "scu_user" );
pSql->insertField("name",(char *)(user));
pSql->insertField("pwd",password);
if(desc != NULL) pSql->insertField("descr",(char *)(desc));
if(groupno >= 0) pSql->insertField("grpno",groupno);
if(job >= 0) pSql->insertField("job",job);

ret = rdbop.exec( *pSql);
return ( ret > 0 )?TRUE:FALSE;

星际浪子
Posts: 3597
Joined: 01 May 2009 23:45

Re: CRdbOp类

Post by 星际浪子 » 28 Jul 2010 10:47

2.update

CRdbOp rdbop(CRdbOp::Direct);
CSql* pSql = rdbop.createSQL();
if ( !pSql )
return FALSE;
int ret;
pSql->setOperate( CSql::OP_Update );
pSql->setTableName( "scu_user" );
pSql->updateField("pwd",password);
if(desc != NULL) pSql->updateField("descr",(char *)(desc));
if(groupno >= 0) pSql->updateField("grpno",groupno);
if(job >= 0) pSql->updateField("job",job);
pSql->whereField("name",(char *)user,CSql::CP_Equal);
ret = rdbop.exec( *pSql);
return ( ret > 0 )?TRUE:FALSE;

星际浪子
Posts: 3597
Joined: 01 May 2009 23:45

Re: CRdbOp类

Post by 星际浪子 » 28 Jul 2010 10:48

3.delete

CRdbOp rdbop(CRdbOp::Direct);
CDataset ds;
char sql𖕸[\512];
int ret;
sprintf(sql,"delete from scu_user where name=\'%s\'",user);
ret = rdbop.exec(sql);
return (ret>0)?TRUE:FALSE;

星际浪子
Posts: 3597
Joined: 01 May 2009 23:45

Re: CRdbOp类

Post by 星际浪子 » 28 Jul 2010 10:51

4.select

CRdbOp rdbop(CRdbOp::Direct);
char password[PASSWORD_LEN];
char sql𖕸𖕸【512】;
if( CreatePassWord(passwd,password) == FALSE) return FALSE;
sprintf(sql,"select pwd from scu_user where name=\'%s\'",user);
CDataset ds;
int ret = rdbop.exec(sql,ds);
if (ret <0)
{
return FALSE;
}
if (ds.rowSize()!= 1)
return FALSE;
if( strcmp(password,ds.field( 0,"pwd").value().toString().c_str() ) == 0) return TRUE;
return FALSE;

星际浪子
Posts: 3597
Joined: 01 May 2009 23:45

Re: CRdbOp类

Post by 星际浪子 » 28 Jul 2010 11:01

CDataset ds
ds.rowSize()//记录个数
ds.field(0,"active").value().toInt32() == FALSE//前提FALSE==0

星际浪子
Posts: 3597
Joined: 01 May 2009 23:45

Re: CRdbOp类

Post by 星际浪子 » 28 Jul 2010 11:05

不需要CDataset:delete,insert,update
需要CDataset:select,

星际浪子
Posts: 3597
Joined: 01 May 2009 23:45

Re: CRdbOp类

Post by 星际浪子 » 30 Jul 2010 14:28

主键判断:
CRdbOp rdbop(CRdbOp::Direct);
CFieldInfo fi;
QString s("dbserverinfo");
bool b = rdbop.tableInfo(s.ascii(),ds.tableInfo());
if (! b)
{
QMessageBox::information(0,"tip","error");
}
fi = ds.fieldInfo("id");
if (fi.isPrimaryKey())
{
QMessageBox::information(0,"tip","yes");
}
else
{
QMessageBox::information(0,"tip","no");
}

星际浪子
Posts: 3597
Joined: 01 May 2009 23:45

Re: CRdbOp类

Post by 星际浪子 » 30 Jul 2010 14:39

判断主键, 不过这种方法不行,还不知道为什么
CRdbOp rdbop(CRdbOp::Direct);
CTableInfo ti;
if (! rdbop.tableInfo("dbserverinfo",ti) )
{
QMessageBox::information(0,"tip","0");
}
CFieldInfo fi = ti.fieldInfo("id");
if (fi.isPrimaryKey())
{
QMessageBox::information(0,"tip","yes");
}
else
{
QMessageBox::information(0,"tip","no");
}

wanyan
Posts: 13
Joined: 23 Jun 2010 21:42

Re: CRdbOp类

Post by wanyan » 30 Jul 2010 16:13

哪来的?真解

星际浪子
Posts: 3597
Joined: 01 May 2009 23:45

Re: CRdbOp类

Post by 星际浪子 » 30 Jul 2010 16:33

select

CRdbOp rdbop(CRdbOp::Direct);
CSql *psql = rdbop.createSQL();
psql->selectField(m_MTblRef[index].m_index_data)
CDataset ds;
psql->setOperate(CSql::OP_Select);
psql->selectDistinct(true);
char tmp𖕸];
memset(tmp,0,512);
strcpy(tmp,m_MTblRef[index].m_index_tbl);
psql->setTableName(tmp);
rdbop.exec( *psql,ds);

Post Reply