- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2011-12-07 16:41 编辑
回复 yulihua49
一旦扯上数据库就有点晕乎
我打过交道的只有sqlite
keytounix 发表于 2011-12-06 16:42 ![]()
也没什么。
就是数据库里有表,表结构与C结构可以有一个对应关系。扩展到多表,或一个复杂的SQL语句,也能找到与之对应的C结构。
寻找对应的结构比较复杂,但是之后有了结构和模板,处理起来就简单了。
用我的办法比较简单,你的办法就困难一些。
比如:ORACLE- drop table UNIKEY_TEST ;
- create table UNIKEY_TEST (
- ID number(8) not null, --存款ID,包括币种,类别,存期等等
- BEG_DATE date not null, -- 开始日期
- RATE number(8,2), --利率
- FLAG number(1), -- 0:可用,-1:不可用
- NOTE varchar2(120) -- 备注
- );
- create unique index idex on UNIKEY_TEST(ID,BEG_DATE desc);
复制代码 > mkpatt.sh
输入表名: UNIKEY_TEST
T_PkgType UNIKEY_TEST_tpl[]={
{CH_INT,sizeof(int),"id",0,-1},
{CH_JUL,sizeof(INT4),"beg_date",YEAR_TO_DAY},
{CH_DOUBLE,sizeof(double),"rate","%10.2lf"},
{CH_TINY,1,"flag"},
{CH_CHAR,121,"note"},
{-1,0,"UNIKEY_TEST","id|beg_date|"} //表名和主键
};
extern T_PkgType UNIKEY_TEST_tpl[];
typedef struct {
int id;
INT4 beg_date;
double rate;
char flag;
char note[121];
} UNIKEY_TEST_stu;
你看看那个模板,是不是很容易构建select语句?
SELECT 提取各列名 FROM 提取表名 WHERE 由主键构建主键表达式
prepare之
然后绑定变量到结构,每个列的绑定位置就是结构的基地址+模板的偏移量。
Fetch一下,数据库里的数据就跑到结构里去了。 |
|