?? dbadmin.cpp
字號:
//////////////////////////////////////////////////////////////////////////
//
//
//
//
//
///////////////////////////////////////////////////////////////////////////
#include "dbadmin.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
/********************************************************************
*function: cut space ' ' from right of input string
*parameters: string '\0'
*return:
*by: zhangjinde 2002/6/30
*
*warn: it must be '\0' that the most right of iput string,
* otherwise the space can not cut
********************************************************************/
CDBAdmin::CDBAdmin()
{
//DBConnectDatabase();
}
CDBAdmin::~CDBAdmin()
{
//DBDisconnectDatabase();
}
/********************************************************************
*function: handle error when execute sql
*parameters:
*return: 0:success; 100:not found;<0 :error
*by: zhangjinde 2002/6/30
*
********************************************************************/
void CDBAdmin::DBSQLError()
{
char pchSQL[516];
_CommandPtr pCmd;
_RecordsetPtr pRs = NULL;
HRESULT hr;
_variant_t paramval;
sprintf(pchSQL,"rollback;");
try {
hr = pCmd.CreateInstance(__uuidof(Command));
if(FAILED(hr))
return;
pCmd->ActiveConnection = m_pCon;
pCmd->CommandType = adCmdText;
pCmd->CommandText = _bstr_t(pchSQL);
pRs = pCmd->Execute(NULL, NULL, adCmdText);
if (pRs == NULL )
{
return;
}
}
catch (_com_error &e) {
printf (e.Description());
}
}
/********************************************************************
*function: connect to batabse via user/password@dbstring
*parameters:
*return: 0:success;<0:error
*by: zhangjinde 2002/6/30
*
********************************************************************/
int CDBAdmin::DBConnectDatabase(char *pszDsnName, char *pszDBUser, char *pszDBPassword)
{
try {
HRESULT hr;
hr = m_pCon.CreateInstance(__uuidof(Connection));
if (FAILED(hr))
{
printf("CreateInstance error");
return -1;
}
hr = m_pCon->Open(pszDsnName, pszDBUser, pszDBPassword, adConnectUnspecified);
// hr = m_pCon->Open("Provider=MSDAORA.1;Password=known;User ID=known;Data Source=known_dbf;Persist Security Info=True",
// pszDBUser, pszDBPassword, adConnectUnspecified);//adConnectUnspecified
if (FAILED(hr))
{
printf("Open error");
return -1;
}
}
// catch (...) {
// return -1;
// }
catch (_com_error &e) {
printf (e.Description());
return -1;
}
return 0;
}
/********************************************************************
*function: logout from database
*parameters:
*return:
*by: zhangjinde 2002/6/30
*
********************************************************************/
void CDBAdmin::DBDisconnectDatabase()
{
try {
m_pCon->Close ();
m_pCon = NULL;
}
catch(...) {
// return -1;
}
return;
}
/********************************************************************
*function: validate password
*parameters:
*return:
*by: zhangjinde 2002/6/30
*
********************************************************************/
int CDBAdmin::DBCheckOperPasswd(long nPrintId, char *szUserName,char *szPasswd,int *pnPrivilege)
{
/* SELECT op.oper_level
FROM OPERATOR op, BUSINESSPOS bp , PRINTPOS pp
WHERE op.oper_name=user_id
AND bp.business_id=pp.business_id
AND op.business_id=bp.business_id
AND pp.pos_no = print_id
AND op.oper_passwd=user_pass;
*/
char pchSQL[516];
_CommandPtr pCmd;
_RecordsetPtr pRs = NULL;
HRESULT hr;
_variant_t paramval;
sprintf(pchSQL,"SELECT op.oper_level FROM OPERATOR op, BUSINESSPOS bp , PRINTPOS pp "
"WHERE op.oper_name='%s' AND bp.business_id=pp.business_id AND op.business_id=bp.business_id "
"AND pp.pos_no = %d AND op.oper_passwd='%s';",szUserName,nPrintId,szPasswd);
try {
hr = pCmd.CreateInstance(__uuidof(Command));
if(FAILED(hr))
return 0;
pCmd->ActiveConnection = m_pCon;
pCmd->CommandType = adCmdText;
pCmd->CommandText = _bstr_t(pchSQL);
pRs = pCmd->Execute(NULL, NULL, adCmdText);
if (pRs == NULL )
{
return -1;
}
pRs->MoveFirst();
paramval.Clear();
paramval = pRs->Fields->GetItem(0l)->Value;
*pnPrivilege = atoi((char*)_bstr_t(paramval));
}
catch (_com_error &e) {
printf (e.Description());
*pnPrivilege = -1;
return 1;
}
return 0;
}
/********************************************************************
*function: 改操作員密碼
*parameters:
*return: <0:error ;=0:sucess; =1403:oldpassword is error
*by: zhangjinde 2002/6/30
*
********************************************************************/
int CDBAdmin::DBChangeOperPasswd(long lPosNO,char *szUserName,char *szOldPasswd,char *szNewPasswd)
{
//UPDATE "OPERATOR" SET oper_passwd = '' WHERE oper_name = 'OPERATORNAME' and business_id='Oper_BusinessId';
char pchSQL[516];
_CommandPtr pCmd;
_RecordsetPtr pRs = NULL;
HRESULT hr;
_variant_t paramval;
long busid = 0;
sprintf(pchSQL,"select business_id from printpos where pos_no= %d;",lPosNO);
// sprintf(pchSQL,"UPDATE \"OPERATOR\" SET oper_passwd = '%s' "
// "WHERE oper_name = '%s' and business_id = '%s';",
try {
//取營業(yè)廳ID
hr = pCmd.CreateInstance(__uuidof(Command));
if(FAILED(hr))
return 0;
pCmd->ActiveConnection = m_pCon;
pCmd->CommandType = adCmdText;
pCmd->CommandText = _bstr_t(pchSQL);
pRs = pCmd->Execute(NULL, NULL, adCmdText);
if (pRs == NULL )
{
return -1;
}
pRs->MoveFirst();
paramval.Clear();
paramval = pRs->Fields->GetItem(0l)->Value;
busid = atoi((char*)_bstr_t(paramval));
//改變密碼
sprintf(pchSQL,"UPDATE \"OPERATOR\" SET oper_passwd = '%s' "
"WHERE oper_name = '%s' and business_id = %d;",szNewPasswd,szUserName,busid);
pCmd->CommandType = adCmdText;
pCmd->CommandText = _bstr_t(pchSQL);
pRs = pCmd->Execute(NULL, NULL, adCmdText);
if (pRs == NULL )
{
return -1;
}
}
catch (_com_error &e) {
DBSQLError();
printf (e.Description());
return 1;
}
return 0;
}
//根據(jù)打印終端ip查詢,pos_no,business_id,
//
//
//
int CDBAdmin::DBQueryPosByIp(char *szPosIp, long &lPosNo, long &lBusinessId, char *szCaption, char *szBusinessAddr, char *szAreaCode, char *szFonts)
{
char pchSQL[516];
_CommandPtr pCmd;
_RecordsetPtr pRs = NULL;
HRESULT hr;
_variant_t paramval;
sprintf(pchSQL,"select pp.pos_no,pp.business_id,LTRIM(RTRIM(pp.pos_fonts)),ltrim(rtrim(pp.caption)),LTRIM(RTRIM(bp.business_addr)),LTRIM(RTRIM(aa.area_code)) from "
"printpos pp,businesspos bp, area aa where (pp.business_id = bp.business_id) "
"AND (bp.area_id = aa.area_id) AND (LTRIM(RTRIM(pp.pos_ip)) = '%s') "
"AND bp.isuse = 'USE' AND pp.isuse = 'USE';",szPosIp);
try {
hr = pCmd.CreateInstance(__uuidof(Command));
if(FAILED(hr))
return 0;
pCmd->ActiveConnection = m_pCon;
pCmd->CommandType = adCmdText;
pCmd->CommandText = _bstr_t(pchSQL);
pRs = pCmd->Execute(NULL, NULL, adCmdText);
if (pRs == NULL )
{
return -1;
}
pRs->MoveFirst();
paramval.Clear();
paramval = pRs->Fields->GetItem(0l)->Value;
lPosNo = atoi((char*)_bstr_t(paramval));
paramval.Clear();
paramval = pRs->Fields->GetItem(1l)->Value;
lBusinessId = atoi((char*)_bstr_t(paramval));
paramval.Clear();
paramval = pRs->Fields->GetItem(2l)->Value;
if(paramval.vt != VT_NULL)
strcpy(szFonts,(char*)_bstr_t(paramval));
else
szFonts[0] = '\0';
paramval.Clear();
paramval = pRs->Fields->GetItem(3l)->Value;
if(paramval.vt != VT_NULL)
strcpy(szCaption,(char*)_bstr_t(paramval));
else
szCaption[0] = '\0';
paramval.Clear();
paramval = pRs->Fields->GetItem(4l)->Value;
if(paramval.vt != VT_NULL)
strcpy(szBusinessAddr,(char*)_bstr_t(paramval));
else
szBusinessAddr[0] = '\0';
paramval.Clear();
paramval = pRs->Fields->GetItem(5l)->Value;
if(paramval.vt != VT_NULL)
strcpy(szAreaCode,(char*)_bstr_t(paramval));
else
szAreaCode[0] = '\0';
}
/*
_CommandPtr pCmd;
_ParameterPtr param;
HRESULT hr;
long lRet = 10;
try {
hr = pCmd.CreateInstance(__uuidof(Command));
if(FAILED(hr))
return NULL;
pCmd->ActiveConnection = m_pCon;
pCmd->CommandType = adCmdStoredProc;
pCmd->CommandText = _bstr_t("print_ip");
param = pCmd->CreateParameter("@UserName",adBSTR,adParamInput,sizeof(char[20]),_bstr_t(szPosIp));
pCmd->Parameters->Append(param);
param = pCmd->CreateParameter("@lPosNo",adInteger,adParamOutput,sizeof(_variant_t),lPosNo);
pCmd->Parameters->Append(param);
param = pCmd->CreateParameter("@lBusinessId",adInteger,adParamOutput,sizeof(_variant_t),lBusinessId);
pCmd->Parameters->Append(param);
param = pCmd->CreateParameter("@Caption",adBSTR,adParamOutput,sizeof(char[50]),_bstr_t(szCaption));
pCmd->Parameters->Append(param);
param = pCmd->CreateParameter("@BusAddr",adBSTR,adParamOutput,sizeof(char[50]),szBusinessAddr);
pCmd->Parameters->Append(param);
param = pCmd->CreateParameter("@lRet",adInteger,adParamOutput,sizeof(_variant_t),lRet);
pCmd->Parameters->Append(param);
pCmd->Execute(NULL, NULL, adCmdStoredProc);
}
// catch (...) {
// return -1;
// }
*/ catch (_com_error &e) {
printf (e.Description());
return 1;
}
//
return 0;//lRet;
}
/********************************************************************
*function: 插入一條打印的記錄
*parameters:
*return: 0:sucess;<0:失敗
*by: zhangjinde 2002/6/30
*
********************************************************************/
int CDBAdmin::DBAddPrintRecord(long lOperId,long lPrtPosId,char *szPhoneNumber,char *szAcctMonth,
char *szCallType,char *szBeginTime, char *szEndTime,
int nLineCount,long lCallFee, int nPrintedFee)
{
/* INSERT INTO printinfo values(
SEQ_PRINTINFO_ID.NEXTVAL,
1,
1,
'139123456',
SYSDATE,
TO_DATE('200208','YYYYMM'),
'',
'',
1000,
2034,
0);
COMMIT;
INSERT INTO operator values(
1,
'139123456',
'1',
0,
'123456',
2);
*/
char pchSQL[516];
_CommandPtr pCmd;
_RecordsetPtr pRs = NULL;
HRESULT hr;
_variant_t paramval;
sprintf(pchSQL,"INSERT INTO printinfo values(SEQ_PRINTINFO_ID.NEXTVAL,"
"%d, %d,'%s', '%s',SYSDATE,to_date('%s','YYYYMM'),'','',"
// "%d, %d,%d,'0');",
"%d, %d,%d,'0');",
lOperId,lPrtPosId,szCallType,szPhoneNumber,szAcctMonth,nLineCount,lCallFee,nPrintedFee);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -