- 2008-9-16
- 读取一行
- void main()
- {
- char buf[255];
- FILE* file = fopen("D://to//filename.txt","rb");
- while (fgets(buf,255,file))
- {
- // int x = 1;
- // x*=1;
- }
- fclose(file);
- cout << buf << endl;
- }
- 读取全部内容
- #include <string.h>
- void main()
- {
- char buf[255];
- char txt[255] = "";
- FILE* file = fopen("D://to//filename.txt","rb");
- while (fgets(buf,255,file))
- {
- strcat(txt, buf);
- }
- fclose(file);
- cout << buf << endl;
- cout << txt << endl;
- }
- 指针的问题
- void main()
- {
- char* p;
- if (p != NULL)
- {
- cout << "p != NULL" << endl;
- }
- }
- 结果为
- p != NULL
- 所以在定义指针时要注意,进行指针的初始化
- char* p = NULL;
- //
- 这里返回的指针没有指向临时变量,所以是可以的
- char* get_char(char* p)
- {
- char* t = p;
- return t;
- }
- void main()
- {
- char* t = "NanJing";
- cout << get_char(t) << endl;
- }
- ///
- /**
- * 返回当前游标的数据
- * @return 当前游标的数据
- */
- inline TYPE* Current()
- {
- if (m_pCur == NULL) return NULL;
- TYPE* pReturn = m_pCur->pItem;
- return pReturn;
- };
- /**
- * 返回当前游标
- * @return 当前游标
- */
- inline T_NODE* Position()
- {
- return m_pCur;
- };
- /
- db_student.ConvToTable(t_student, stru_student);
- cout << t_student.SNO.Char() << " ";
- cout << t_student.SNAME.Char() << endl;
- /
- //--------------------------------------------------------------------------
- //
- // content: 根据索引和值插入节点。以后可以根据这个索引把值取出来
- //
- // input:
- // p_index -> 索引。
- // 必须全部是'0' ~ '9'之间的字符构成的字符串。
- // 不能为空
- // 不能含其他字符
- // 该索引必须是唯一性索引
- //
- // pData -> 要检索的数据。可以是任意类型。
- //
- // return:
- // 正常返回1,索引异常返回-1,已有节点数据返回0
- //
- // 注意:数据pData传入以后,List并不申请空间,而是直接引用,因此
- // 不能在外面删除
- //--------------------------------------------------------------------------
- inline short Insert( const char* p_index, TYPE* pData )
- {
- T_NODE10 *m_pcursor = m_proot;
- T_NODE10 *p_temp= NULL;
- short j = 1;
- char c = '/0';
- for( unsigned i = 0 ; i < strlen( p_index ) ; i ++ )
- {
- c = p_index[ i ] ;
- if( c < '0' || c > '9' )
- {
- g_cLogFile.Error(0, "索引错误,存在字符!" ) ;
- return -1 ;
- }
- if( m_pcursor -> p_pointer[ c-'0' ] == NULL )
- {//节点还没建立
- p_temp = NULL;
- p_temp = new T_NODE10;
- if (p_temp == NULL) //Add by Rose 2004-1-30
- {
- g_cLogFile.Error(0, "申请内存失败!" );
- return -1 ;
- }
- m_lnodecount ++ ;
- m_pcursor -> p_pointer[ c-'0' ] = p_temp ;
- }
- m_pcursor = m_pcursor -> p_pointer[ c-'0' ] ;
- };
- //在尾节点要插入数据
- //验证
- if( m_pcursor -> p_data == NULL )
- {//唯一性索引尾节点应该没有数据
- m_pcursor -> p_data = pData ;
- m_lcount ++ ;
- }
- else
- {
- g_cLogFile.Error(0, "索引不唯一,不能插入" ) ;
- j = 0 ;
- }
- #ifdef MYDEB
- ExportAll();
- #endif
- return j ;
- };
- t_Delete(t_table, 3);
- t_Delete(t_table, 2);
- int t_Delete(T_ACCT_BALANCE table, int ACCT_BALANCE_ID)
- {
- T_ACCT_BALANCE tableDelete;
- tableDelete.SetConn(DefaultConnect);
- tableDelete.SetBatSize(5);//这里为5时,要加上tableDelete.Flush();
- tableDelete.SetTableName("ACCT_BALANCE_A");
- tableDelete = table;//
- tableDelete.ACCT_BALANCE_ID = ACCT_BALANCE_ID;
- long j = tableDelete.Delete();
- if (j > 0)
- {
- //tableDelete.Flush();
- DefaultConnect.Commit();
- }
- else
- {
- j = -1;
- DefaultConnect.Rollback();
- cout << DefaultConnect.GetMsg();
- }
- return j;
- }
- 加上tableDelete.Flush();可以强制执行提交
- ///
- 9-17
- 程序问题
- 1. 命名
- 2.初始化
- 3.strcpy
- Logout();
- DefaultConnect.Commit();
- DefaultConnect.Rollback();
- DefaultConnect.Commit();
- DefaultConnect.Rollback();
- 这两句是互斥的.
- Logout应该放在最后
- /
- char buf[255] = "";
- FILE* file = fopen("D://to//station_name.txt","rb");
- if (file == NULL)
- {
- return;
- }
- int i = 0;
- int lenth = 0;
- while ( i < stationNum )
- {
- fgets(buf,255,file);
- strcpy(stationName[i], buf);
- lenth = strlen(stationName[i]);
- stationName[i][lenth - 2] = '/0';
- i++;
- }
- fclose(file);
- 这样得到的字符串结尾为13,10,0'';
- ///
- 9-18
- 对内存数据的Update,Insert,在save的时候才开始从标记链表中执行,调用表类的相应操作
- long Save(Connection &conn)
- {
- long j = 1;
- T_STUDENT table_insert(conn, n_batch_size);
- T_STUDENT table_update(conn, n_batch_size);
- SetTable(table_insert);
- SetTable(table_update);
- if (!insert_list.IsEmpty())
- {
- insert_list.GoHead();
- while (j > 0 && insert_list.Position())
- {
- ConvToTable(table_insert, insert_list.Current());
- insert_list.Current()->MODIFY_FLAG = NORMAL_STATE;
- j = Report(conn, table_insert.Insert());
- if (j > 0)
- {
- insert_list.Next();
- }
- }
- insert_list.EmptyList();
- if (j > 0)
- {
- j = Report(conn, table_insert.Flush());
- }
- }
- if (!update_list.IsEmpty())
- {
- update_list.GoHead();
- while (j > 0 && update_list.Position())
- {
- ConvToTable(table_update, update_list.Current());
- update_list.Current()->MODIFY_FLAG = NORMAL_STATE;
- j = Report(conn, table_update.Update());
- if (j > 0)
- {
- update_list.Next();
- }
- }
- update_list.EmptyList();
- if (j > 0)
- {
- j = Report(conn, table_update.Flush());
- }
- }
- return j;
- }
- ///
- 9-19
- X.SERV_ID PRODUCT_INSTANCE_ID 为查询结果设置名称
- 观察SQL语句
- sprintf(szSql,
- " SELECT /*+rule*/ "
- " X.ACCT_ID, "
- " X.SERV_ID PRODUCT_INSTANCE_ID, "
- " Y.BILL_ITEM ACCT_ITEM_TYPE_ID, "
- " %d BILLING_CYCLE_ID, "
- " Y.PRIMAL_FEE ORIGINAL_AMOUNT, "
- " Y.CDR_DISCOUNT, "
- " Y.BILL_DISCOUNT ACCT_DISCOUNT, "
- " Y.ADJ_FEE ADJUST_AMOUNT, "
- " 0 REAL_AMOUNT, "
- //Modify By June 20080722 根据帐务处理的要求做了修改
- //" Y.PRIMAL_FEE - Y.CDR_DISCOUNT - Y.BILL_DISCOUNT + Y.ADJ_FEE RECE_AMOUNT, "
- " Y.PRIMAL_FEE - Y.BILL_DISCOUNT + Y.ADJ_FEE RECE_AMOUNT, "
- " TO_CHAR(sysdate, 'YYYYMMDDHH24MISS') CREATED_DATE, "
- " '%s' REGION_ID, "
- " X.PLAN_ID PRODUCT_PRICE_ID, "
- " TO_CHAR(sysdate, 'YYYYMMDDHH24MISS') OPT_DATE, '' KEY_NUM "
- " FROM USER_BILL_%s%06d X, USER_BILL_DTL_%s%06d Y "
- " WHERE X.BILL_ID = Y.BILL_ID AND X.SERV_ID != X.ACCT_ID "
- " ORDER BY X.ACCT_ID ,X.SERV_ID",
- pstruBillingCycle->BILLING_CYCLE_ID, g_struGlobalParam.szRegion,
- g_struGlobalParam.szAreaCode + 1, pstruBillingCycle->BILLING_CYCLE_ID,
- g_struGlobalParam.szAreaCode + 1, pstruBillingCycle->BILLING_CYCLE_ID);
- //
- 多表查询的实现, 注意,语句一定要正确
- long j = 0;
- char str[1024];
- char str1[1024];
- j = Login("oracle");
- CRecords c_Records(DefaultConnect, 1024);
- // strcpy(str, "select person.name, age from person, student where student.sno = '002' and student.name = person.name;");
- strcpy(str, "select COUNAMME from student,course where student.SNO = course.SNO and student.SNAME = 'Jam'");
- // strcpy(str, "select * from student");
- // strcpy(str, "select * from course");
- j = c_Records.Query(str);
- if (j <= 0)
- {
- cout << GetMsg();
- return 1;
- }
- // j = DefaultConnect.ExecSql(str);
- while (j > 0 )
- {
- cout << c_Records.Field(0).Char() << " ";
- // cout << c_Records.Field(1).Float() << endl;
- j = c_Records.Next();
- }
- Logout();
- return 0;
- }
- //
- 可以采用加""的方式,把一个长字符串分行写
- strcpy(str, "select COUNAMME from student,"
- "course where student.SNO = course.SNO and student.SNAME = 'Jam'");
- /
- File在使用的时候可以直接写字段的名称,便于理解,要注意大小写
- cout << c_Records.Field("COUNAMME").Char() << " ";
- //
- cvs的Update
- 有修改的文件如果直接Update,不会执行,系统会认为这个修改的版本是最新的,
- 如果没有修改过,就会Update;
- ///
- long CDbFactory::GetConnection(const char *szDbIndex, char *szCenter, Connection *&conn)
- 函数中通过
- String strDbIndex("");
- strDbIndex += szDbIndex;
- strDbIndex += szCenter;
- 再
- itMapConnString = mapConnString.find(strDbIndex);
- if (itMapConnString == mapConnString.end())
- {
- g_cLogFile.Error(0, "查找不到数据库[%s]配置!", (const char*)strDbIndex);
- return -1;
- }
- conn = new Connection;
- j = conn->Login(*((STRU_CONNECT_STRING*)itMapConnString->second));
- //sem_post(&sem);
- pthread_mutex_unlock(&t_mutex);
- return j;
- 得到配置信息
- //
- 9-20
- 使用Dbfaltory的时候,不能忘记
- long j = Login("oracle");
- if (j <= 0)
- {
- cout << "连接失败" << endl;
- return 1;
- }
- 9-21
- F:/work/products/HABOSS/haboss_acct/project/test
- 中的配置文件
- [oracle]
- ConnectString = hadev
- PassWord = base
- UserName = base
- [orac]
- ConnectString =
- PassWord =
- UserName =
- 要改为base
- long j = Login("oracle");
- if (j <= 0)
- {
- cout << "连接失败" << endl;
- return 1;
- }
- Connection *BaseConn = NULL;
- j = DbFactory.Initial();
- if (j <= 0)
- {
- cout << "Initial failed" << endl;
- return 1;
- }
- char str[1024];
- DbFactory.GetConnection("ams1", "", BaseConn);//edit
- CRecords c_Records;
- c_Records.SetBatSize(1);//++
- c_Records.SetConnect(*BaseConn);//++
- strcpy(str, "select * from student");
- // strcpy(str, "select * from course");
- j = c_Records.Query(str);
- if (j <= 0)
- {
- cout << GetMsg();
- return 1;
- }
- // j = DefaultConnect.ExecSql(str);
- while (j > 0 )
- {
- cout << c_Records.Field("SNAME").Char() << " ";
- // cout << c_Records.Field(1).Float() << endl;
- j = c_Records.Next();
- }
- DbFactory.FreeConnection(BaseConn);
- Logout();
- return 0;
- 其中
- DbFactory.GetConnection("ams1", "", BaseConn);//edit
- 很关键,根据得到的数据库名进行连接
- 更新后出现错误,要添加文件
- 添加cpp,hpp,不能有遗漏
- sprintf
- char a[10];
- sprintf(a, "%d%02d", 123, 5);
- cout << a << endl;
- ///
- 调用main文件夹中的#include "ILLNUM_RESULT.h"时,提示找不到
- 要进行路径设置
- 先要在Tools 中的options中的directories中进行设置,把各个文件加入;
- v//
- 随意赋值出现错误
- char tmp[] = "20080820160123";
- strcpy(tmp, ymonth);
- tmp[6] = '0';这时日期为00,内部检查时会出错