Esempio n. 1
0
void
KexiDBAutoField::setDataSource(const QString &ds)
{
    KexiFormDataItemInterface::setDataSource(ds);
    if (ds.isEmpty()) {
        setColumnInfo(0);
    }
}
Esempio n. 2
0
bool FileMgr::memToFile(const char *sFileName, const int iTableType, bool bShow){
    if ( !sFileName ) {
        return false;
    }

    setFileName(sFileName);
    setTableType(iTableType);

    char sFullFileName[500]={0};
    if ('/' != m_sFileName[0] ) {
        strcat(sFullFileName, m_sFilePath);
        strcat(sFullFileName, m_sFileName);
    }else {
    	for(int j=(strlen(sFileName)-1);j>0;j--)
    	{
    		if(m_sFileName[j]=='/')
    		{
    			strncpy(m_sFilePath,m_sFileName,j);
    			break;
    		}
    	}
    	strcat(sFullFileName, m_sFileName);
    }
    
		if(!openPath(m_sFilePath)) {
			return false;
		}
    Log::log(0, "导出文件的路径是:%s", m_sFilePath);

    if ( !access(sFullFileName , R_OK|W_OK) ) {
        Log::log(0, "文件[%s]已存在,请重新指定文件名后再试!", sFullFileName);
        return false;
    }
    if ( !setColumnInfo(iTableType) ) {
        return false;
    }
    if ( !openDbFile(sFullFileName) ) {
        return false;
    }
    int iTotalCnt = 0;          //待处理数据量

    Log::log(0, "开始导出数据...");
    switch (m_iTableType) {
    	case TABLE_HCODE_INFO:
    	    {
            HCodeInfoStruct *pData = NULL;

            setDataStructSize(sizeof(HCodeInfoStruct));
            iTotalCnt = SHMInfoCtl::getCount(TABLE_HCODE_INFO);
            SHMInfoCtl::getHeadData(&pData, 1);
            addData((char*)pData, iTotalCnt);
            if (bShow) {
                for (int i=0;i<iTotalCnt;++i)
                {
                    SHMInfoCtl::showHCodeInfo(*(pData+i));
                }
            }
    	    }
    	    break;
    	case TABLE_MIN_INFO:
    	    {
            MinInfoStruct *pData = NULL;

            setDataStructSize(sizeof(MinInfoStruct));
            iTotalCnt = SHMInfoCtl::getCount(TABLE_MIN_INFO);
            SHMInfoCtl::getMinData(&pData, 1);
            addData((char*)pData, iTotalCnt);
            if (bShow) {
                for (int i=0;i<iTotalCnt;++i)
                {
                    SHMInfoCtl::showMinInfo(*(pData+i));
                }
            }
    	    }
    	    break;
    	case TABLE_LOCAL_INFO:
    	    {
						
    	    }
    	    break;
    	case TABLE_IMSI_INFO:
    	    {
            IMSIInfoStruct *pData = NULL;

            setDataStructSize(sizeof(IMSIInfoStruct));
            iTotalCnt = SHMInfoCtl::getCount(TABLE_IMSI_INFO);
            SHMInfoCtl::getImsiData(&pData, 1);
            addData((char*)pData, iTotalCnt);
            if (bShow) {
                for (int i=0;i<iTotalCnt;++i)
                {
                    SHMInfoCtl::showImsiInfo(*(pData+i));
                }
            }
    	    }
    	    break;
    default:
        {
            Log::log(0, "未知表类型:%d", iTableType);
            return false;
        }
        break;
    }

    closeFile();
    Log::log(0, "共导出 %d 条数据!", iTotalCnt);

    return true;
}
Esempio n. 3
0
bool FileMgr::fileToMem(const char *sFileName, const int iTableType,bool bShow ,bool bReplace){
    if (0 == sFileName)
        return false;

    setFileName(sFileName);
    setTableType(iTableType);

    char sFullFileName[500]={0};
    char sLineTmp[DATA_LEN]={0};

    if ('/' != m_sFileName[0] ) {
        strcat(sFullFileName, m_sFilePath);
        strcat(sFullFileName, m_sFileName);
    }else {
    	for(int j=(strlen(sFileName)-1);j>0;j--)
    	{
    		if(m_sFileName[j]=='/')
    		{
    			strncpy(m_sFilePath,m_sFileName,j);
    			break;
    		}
    	}
    	strcat(sFullFileName, m_sFileName);
    }
    
		if(!openPath(m_sFilePath)) {
			return false;
		}
    Log::log(0, "导入文件的路径是:%s", m_sFilePath);
    
    if ( access(sFullFileName , R_OK|W_OK) ) {
    		m_poLogGroup->log(MBC_FILE_NOT_EXIST,LOG_LEVEL_ERROR,LOG_CLASS_ERROR,LOG_TYPE_PROC,-1,NULL,"指定文件不存在[%s]",sFullFileName);
        Log::log(0, "文件[%s]不存在,请重新指定文件名后再试!", sFullFileName);
        return false;
    }
    if ( !setColumnInfo(iTableType) ) {
        return false;
    }
    if (!openFile(sFullFileName, "r")) {
        return false;
    }

    //读取文件内字段名
    if ( getLine(sLineTmp, DATA_LEN-1, '\n') ) {
        if ( !checkColumn(sLineTmp) )
            return false;
    } else {
        Log::log(0, "读取文件内字段名信息出错,请检查文件!");
        return false;
    }
    //处理每一行
    int iTotalCnt = 0;
    int iUpdCnt = 0;
    Log::log(0, "开始导入数据...");
    while ( getLine(sLineTmp, DATA_LEN-1, '\n') ) {
        if ( 0 == sLineTmp[0] ) {
            continue;
        }
        if ( !flushToMem(sLineTmp, bShow, iUpdCnt,bReplace) ) {                //每行数据写入内存
            Log::log(0, "无法加载数据,此行为:\n%s", sLineTmp);
            return false;    
        }
        ++iTotalCnt;
    }
    closeFile();
    Log::log(0, "共导入 %d 条数据:更新 %d 条,新增 %d 条!", iTotalCnt, iUpdCnt, iTotalCnt - iUpdCnt);

    return true;
}