loadbasicdat.cpp
来自「液晶电视完整代码可实现人机界面」· C++ 代码 · 共 1,881 行 · 第 1/4 页
CPP
1,881 行
sprintf( fullname, "%s/basicdata/CIS_NODE_DATA.del", getenv("WORKDIR") ); if( optno == 5 ) sprintf( fullname, "%s/basicdata/CIS_CITY_DATA.del", getenv("WORKDIR") ); if( optno == 6 ) sprintf( fullname, "%s/basicdata/CIS_RIGHTLIST_DATA.del", getenv("WORKDIR") ); if( optno == 7 ) sprintf( fullname, "%s/basicdata/CIS_COMMON_DATA.del", getenv("WORKDIR") ); if( optno == 8 ) sprintf( fullname, "%s/basicdata/CIS_PARAMETER_DATA.del", getenv("WORKDIR") ); // char Password[20]; memset( Password , 0 , sizeof( Password )); strcpy( Password , getenv("PASSWORD")); char DBUserName[10]; memset( DBUserName , 0 , sizeof(DBUserName)); strcpy( DBUserName , getenv("DBUSERNAME")); StrTrim(DBUserName , ' '); if( strlen( DBUserName ) == 0 ) { strcpy( DBUserName , "sa"); } printf("DBUserName = [%s]\n", DBUserName ); ret = connectToDB( "SYBASE" , DBUserName , Password , "DIRWAYSDB"); if( ret != 0 ) { filelog("LoadError.log","连接数据库失败!\n"); printf("连接数据库失败!\n"); return FALSE; } switch( optno ) { case 1: ret = LoadCisBankData( fullname, RetMsg ); break; case 2: ret = LoadCisBankAssist( fullname, RetMsg ); break; case 3: ret = LoadCisBankclassData( fullname, RetMsg ); break; case 4: ret = LoadCisNodeData( fullname, RetMsg ); break; case 5: ret = LoadCisCityData( fullname, RetMsg ); break; case 6: ret = LoadCisRightlistData( fullname, RetMsg ); break; case 7: ret = LoadCisCommonData( fullname, RetMsg ); break; case 8: ret = LoadCisParameterData( fullname, RetMsg ); break; default: printf("错误选项:[%d]", optno); ret = -1; break; } if( ret <= 0 ) { printf("导入失败:%s!\n",RetMsg); return FALSE; } printf("\n======================>导入数据成功<======================\n"); disConnectToDB(); return TRUE;}int LoadCisBankData( char *filename, char *retMsg ){ //提示// printf("Enter LoadCisBankData \n" );// printf("filename:[%s]\n", filename ); //验证介质 if( 0 != access( filename, 0 ) ) { sprintf( retMsg, "数据文件[%s]不存在!", filename ); return FALSE; } // int ret=0; int nCount=0; int nErrno=0; int billflag=0; FILE *FP=NULL; char recvbuff[1024+1]; CIS_BANK_DATA CisBankDat; char *pRet = NULL; char *Begin = NULL, *End = NULL; char Table[15]; char SqlCmd[1024]; char workdate[8+1]; memset( workdate, 0, sizeof(workdate) ); memset( Table, 0, sizeof(Table) ); memset( SqlCmd, 0, sizeof(SqlCmd) ); if ( (FP = fopen(filename, "r+")) == NULL ) { sprintf(retMsg, "打开数据文件[%s]失败!\n", filename); return FALSE; } //查找系统工作日期 sprintf( SqlCmd, "SELECT currsysdate from login" ); ret = sCis.FindCisValue( "login", SqlCmd, workdate, retMsg );//printf("ret:[%d]\tworkdate:[%s]\n", ret, workdate); if( ret <= 0 ) { printf("查找系统工作日失败!\n"); printf("SqlCmd:[%s]\n",SqlCmd ); return FALSE; } //开始数据处理 sCis.BeginTrans(); while( !feof(FP) ) { printf("已导入数据[%d]开始导入第[%d]条数据\n", nCount, nCount+1 ); memset( recvbuff, 0, sizeof(recvbuff) ); pRet = fgets( recvbuff, sizeof(recvbuff), FP ); if( pRet == NULL ) { printf("读取文件内容有误或为空!\n"); sCis.CommitTrans(); // return FALSE; }// printf("recvbuff:[%s]\n", recvbuff ); if( strlen(recvbuff) == 0 ) continue; memset( &CisBankDat, 0, sizeof(CIS_BANK_DATA) ); Begin = End = recvbuff; for( int i=0; i<25; i++ ) { Begin = End; End = strstr( Begin+1, "\t" ); if( End == NULL ) { printf("end\n"); } if( i == 0 ) memcpy( CisBankDat.code, Begin, End - Begin ); if( i == 1 ) memcpy( CisBankDat.status, Begin +1 , End - Begin -1); if( i == 2 ) memcpy( CisBankDat.type, Begin +1, End - Begin -1); if( i == 3 ) memcpy( CisBankDat.banktype, Begin +1 , End - Begin -1); if( i == 4 ) memcpy( CisBankDat.suprlist, Begin +1, End - Begin -1); if( i == 5 ) memcpy( CisBankDat.centcod, Begin +1, End - Begin -1); if( i == 6 ) memcpy( CisBankDat.billcode, Begin +1, End - Begin -1); if( i == 7 ) memcpy( CisBankDat.bankcode, Begin +1, End - Begin -1); if( i == 8 ) memcpy( CisBankDat.ccpc, Begin +1, End - Begin -1); if( i == 9 ) memcpy( CisBankDat.optbank, Begin +1, End - Begin -1); if( i == 30 ) memcpy( CisBankDat.optbankinvdat, Begin +1, End - Begin -1); if( i == 31 ) memcpy( CisBankDat.city, Begin +1, End - Begin -1); if( i == 12 ) memcpy( CisBankDat.bankname, Begin +1, End - Begin -1); if( i == 13 ) memcpy( CisBankDat.simname, Begin +1, End - Begin -1); if( i == 14 ) memcpy( CisBankDat.bankaddr, Begin +1, End - Begin -1); if( i == 15 ) memcpy( CisBankDat.postcode, Begin +1, End - Begin -1); if( i == 16 ) memcpy( CisBankDat.tel, Begin +1, End - Begin -1); if( i == 17 ) memcpy( CisBankDat.linkman, Begin +1, End - Begin -1); if( i == 18 ) memcpy( CisBankDat.email, Begin +1, End - Begin -1); if( i == 19 ) memcpy( CisBankDat.effdate, Begin +1, End - Begin -1); if( i == 20 ) memcpy( CisBankDat.updatedate, Begin +1, End - Begin -1); if( i == 21 ) memcpy( CisBankDat.updatetime, Begin +1, End - Begin -1); if( i == 22 ) memcpy( CisBankDat.alttype, Begin +1, End - Begin -1); if( i == 23 ) memcpy( CisBankDat.updatenum, Begin +1, End - Begin -1); if( i == 24 ) {// End = strstr( Begin+2, "\"" );// memcpy( CisBankDat.remark, Begin + 2 , End - Begin -2); strcpy( CisBankDat.remark, Begin+1 );// memcpy( CisBankDat.remark, Begin +1, End - Begin ); } } //去业务要素头尾 ret = FormatDat( &CisBankDat, retMsg ); if( ret <= 0 ) { printf("retMsg:[%s]\n", retMsg ); sCis.CommitTrans(); return FALSE; } if( ret == 9 ) { nErrno ++; int input; printf("\n!!!导入数据失败是否继续:\t1.跳过该数据/以后手工导入\t2.退出\n"); printf("请输入:"); scanf("%d", &input ); while( 1 ) { if(input<1||input>2) { printf("输入非法[%d]\t使用默认值[1]\n", input); input=1; continue; } else break; } if( input == 2 ) { sCis.CommitTrans(); return FALSE; } if( input==1 ) continue; }if( ret==9 ){ printf("==============================================================\n"); printf( "CisBankDat.code :[%s]\n", CisBankDat.code); printf( "CisBankDat.status :[%s]\n", CisBankDat.status); printf( "CisBankDat.type :[%s]\n", CisBankDat.type); printf( "CisBankDat.banktype :[%s]\n", CisBankDat.banktype); printf( "CisBankDat.suprlist :[%s]\n", CisBankDat.suprlist); printf( "CisBankDat.centcod :[%s]\n", CisBankDat.centcod); printf( "CisBankDat.billcode :[%s]\n", CisBankDat.billcode); printf( "CisBankDat.bankcode :[%s]\n", CisBankDat.bankcode); printf( "CisBankDat.ccpc :[%s]\n", CisBankDat.ccpc); printf( "CisBankDat.optbank :[%s]\n", CisBankDat.optbank); printf( "CisBankDat.optbankinvdat:[%s]\n", CisBankDat.optbankinvdat); printf( "CisBankDat.city :[%s]\n", CisBankDat.city); printf( "CisBankDat.bankname :[%s]\n", CisBankDat.bankname); printf( "CisBankDat.simname :[%s]\n", CisBankDat.simname); printf( "CisBankDat.bankaddr :[%s]\n", CisBankDat.bankaddr); printf( "CisBankDat.postcode :[%s]\n", CisBankDat.postcode); printf( "CisBankDat.tel :[%s]\n", CisBankDat.tel); printf( "CisBankDat.linkman :[%s]\n", CisBankDat.linkman); printf( "CisBankDat.email :[%s]\n", CisBankDat.email); printf( "CisBankDat.effdate :[%s]\n", CisBankDat.effdate); printf( "CisBankDat.updatedate :[%s]\n", CisBankDat.updatedate); printf( "CisBankDat.updatetime :[%s]\n", CisBankDat.updatetime); printf( "CisBankDat.alttype :[%s]\n", CisBankDat.alttype); printf( "CisBankDat.updatenum :[%s]\n", CisBankDat.updatenum); printf( "CisBankDat.remark :[%s]\n", CisBankDat.remark); printf("==============================================================\n"); } //判断票交机构类别 999票交所 if( strncmp( CisBankDat.banktype, "999", 3 ) == 0 ) { billflag = 1; //票交所 strcpy( Table, "BILLENROL" ); } else { billflag = 0; //票交机构 strcpy( Table, "BILLORG" ); } memset( SqlCmd, 0, sizeof(SqlCmd) ); if( billflag == 0 ) { sprintf( SqlCmd, "INSERT INTO %s VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", Table, CisBankDat.code, CisBankDat.banktype, CisBankDat.type, CisBankDat.bankcode, CisBankDat.optbank, CisBankDat.optbankinvdat, CisBankDat.suprlist, CisBankDat.centcod, CisBankDat.billcode, CisBankDat.city, CisBankDat.bankname, CisBankDat.simname, CisBankDat.bankaddr, CisBankDat.tel, CisBankDat.linkman, CisBankDat.postcode, CisBankDat.email, CisBankDat.effdate, CisBankDat.alttype, CisBankDat.remark); } else { sprintf( SqlCmd, "INSERT INTO %s VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", Table, CisBankDat.code, CisBankDat.type, CisBankDat.centcod, CisBankDat.city, CisBankDat.bankname, CisBankDat.simname, CisBankDat.bankaddr, CisBankDat.tel, CisBankDat.linkman, CisBankDat.postcode, CisBankDat.email, CisBankDat.effdate, CisBankDat.alttype, CisBankDat.remark); } ret = sCis.SaveCisData( Table, SqlCmd, retMsg); if( ret <= 0 ) { printf("保存数据失败!\n"); printf( "sSqlCmd:[%s]\n", SqlCmd ); //sCis.RollbackTrans(); sCis.CommitTrans(); return FALSE; } nCount ++ ; } sCis.CommitTrans(); printf("==============导入数据成功[%d]条\t导入数据失败[%d]条=============\n", nCount, nErrno ); if( nErrno != 0 ) printf("!!!!!!提示:导入数据失败[%d]条,请查看日志手工导入!\n", nErrno); fclose( FP ); return TRUE;}int LoadCisBankAssist( char *filename, char *retMsg ){ printf("目前该文件为空,未开发该程序!\n"); return TRUE;}int LoadCisBankclassData( char *filename, char *retMsg ){ //提示// printf("Enter LoadCisBankclassData \n" );// printf("filename:[%s]\n", filename ); //验证介质 if( 0 != access( filename, 0 ) ) { sprintf( retMsg, "数据文件[%s]不存在!", filename ); return FALSE; } // int ret=0; int nCount=0; int nErrno=0; FILE *FP=NULL; char recvbuff[1024+1]; CIS_BANK_CLASS_DATA CisBankDat; char *pRet = NULL; char *Begin = NULL, *End = NULL; char Table[15]; char SqlCmd[1024]; char workdate[8+1]; memset( workdate, 0, sizeof(workdate) ); memset( Table, 0, sizeof(Table) ); memset( SqlCmd, 0, sizeof(SqlCmd) ); if ( (FP = fopen(filename, "r+")) == NULL ) { sprintf(retMsg, "打开数据文件[%s]失败!\n", filename); return FALSE; } //开始数据处理 sCis.BeginTrans(); while( !feof(FP) ) { printf("已导入数据[%d]开始导入第[%d]条数据\n", nCount, nCount+1 ); memset( recvbuff, 0, sizeof(recvbuff) ); pRet = fgets( recvbuff, sizeof(recvbuff), FP ); if( pRet == NULL ) { printf("读取文件内容有误或为空!\n"); // return FALSE; } // printf("recvbuff:[%s]\n", recvbuff ); if( strlen(recvbuff) == 0 ) continue; memset( &CisBankDat, 0, sizeof(CIS_BANK_CLASS_DATA) ); Begin = End = recvbuff; for( int i=0; i<6; i++ ) { Begin = End; End = strstr( Begin+1, "\t" ); if( End == NULL ) { printf("end\n"); } if( i == 0 ) memcpy( CisBankDat.code, Begin, End - Begin ); if( i == 1 ) memcpy( CisBankDat.name, Begin +1 , End - Begin -1); if( i == 2 ) memcpy( CisBankDat.status, Begin +1, End - Begin -1); if( i == 3 ) memcpy( CisBankDat.update, Begin +1 , End - Begin -1); if( i == 4 ) memcpy( CisBankDat.alttype, Begin +1, End - Begin -1);// if( i == 5 )// memcpy( CisBankDat.uptime, Begin +1, End - Begin -1); if( i == 5 ) {// End = strstr( Begin+2, "\"" );// memcpy( CisBankDat.remark, Begin + 2 , End - Begin -2); strcpy( CisBankDat.uptime, Begin+1 );// memcpy( CisBankDat.remark, Begin +1, End - Begin ); } } //去业务要素头尾 ret = FormatCisBankClassDat( &CisBankDat, retMsg ); if( ret <= 0 ) { printf("retMsg:[%s]\n", retMsg ); return FALSE; } if( ret == 9 ) { nErrno ++; nCount --; int input; printf("\n!!!导入数据失败是否继续:\t1.跳过该数据/以后手工导入\t2.退出\n"); printf("请输入:"); scanf("%d", &input ); while( 1 ) { if(input<1||input>2) { printf("输入非法[%d]\t使用默认值[1]\n", input); input=1; continue; } else break; } if( input == 2 ) { return FALSE; } if( input==1 ) continue; }if( ret==9 ){ printf("==============================================================\n"); printf( "CisBankDat.code :[%s]\n", CisBankDat.code);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?