10.openssl编程——文本数据库

10.1  概述
openssl实现了一个简单的文本数据库,他可以从文件读取数据和将数据写到文件中,兵切可以根据关键字段来查询数据。
 
10.2 数据结构
typedef struct txt_db_st {
int num_fields; 表明文本数据库的列数
STACKP_OF(OPENSSL_PSTRING) *data; 用来存放数据,每一行数据组织成为一个字符串数组(每个数组值对应该行的一列),并将此数组地址push到堆栈中。
LHASH_OF(OPENSSL_STRING) **index; 哈希表数组,每一列对应一个哈希表。每一列都可以建哈希表,如果不建哈希表将不能查找改列数据。
int (**qual)(OPENSSL_STRING *);一个函数地址数组,数组的每个元素对应一列,进行插入该别哈希表前的过滤。
long error;
long arg1;
long arg2;
OPENSSL_STRING *arg_row;
}
 
 
10.3 函数说明
a.TXT_DB *TXT_DB_read(BIO *in, int num )
功能:用于从BIO中读入数据,转换为TXT_DB,num用于明确指明列数,本函数不建立哈希表
b.long TXT_DB_write(BIO *out, TXT_DB *db)
功能:将TXT_DB内容写入BIO;
c.int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(char **))
OPENSSL_LH_HASHFUNC hash, OPENSSL_LH_COMPFUNC cmp)
给field指定的列建立哈希表。db为需要建索引的TXT_DB,hash为一行数据的hash 运算回调函数,cmp为一行数据的比较函数。
d.char **TXT_DB_get_by_index(TXT_DB *db, int idx, char **value)
功能:根据关键字段来查询数据,查询结果返回一行数据db为文本数据库,idx表明采用哪一列的哈希表来查找;value为查询条件。
e.int TXT_DB_insert(TXT_DB *db, char **value)
功能:往TXT_DB中插入一行数据。value数组以NULL表示结束。
f.void TXT_DB_free(TXT_DB *db)
功能:清除TXT_DB.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值