本文整理汇总了C++中ROW_VALUES函数的典型用法代码示例。如果您正苦于以下问题:C++ ROW_VALUES函数的具体用法?C++ ROW_VALUES怎么用?C++ ROW_VALUES使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ROW_VALUES函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: load_location_number
int load_location_number(db_func_t * dbf, db1_con_t* dbh, int *loc_nr){
static char query[UL_DB_QUERY_LEN];
db1_res_t * res;
db_row_t * row;
int query_len;
str tmp;
if(!loc_nr || !dbf || !dbh){
LM_ERR("NULL parameter passed \n");
return -1;
}
query_len = 30 + id_col.len + reg_table.len + status_col.len;
if(query_len > UL_DB_QUERY_LEN) {
LM_ERR("weird: query larger than %i bytes.\n", UL_DB_QUERY_LEN);
return -1;
}
memset(query, 0, UL_DB_QUERY_LEN);
if(sprintf(query,
"SELECT MAX(%.*s) "
"FROM "
"%.*s "
"WHERE %.*s = 1;", id_col.len, id_col.s, reg_table.len, reg_table.s, status_col.len, status_col.s) < 0){
LM_ERR("could not sprinf query\n");
return -1;
}
LM_DBG("%s\n",query);
tmp.s = query;
tmp.len = strlen(query);
if (dbf->raw_query (dbh, &tmp, &res) < 0) {
LM_ERR("in database query.\n");
return -1;
}
if (RES_ROW_N (res) == 0) {
dbf->free_result (dbh, res);
LM_DBG ("no data found\n");
return 1;
}
row = RES_ROWS(res) + 0; /* only one row in answer */
if (VAL_NULL (ROW_VALUES(row) + 0)) {
LM_ERR("Weird: Empty Max ID Number\n");
dbf->free_result (dbh, res);
return 1;
}
*loc_nr = VAL_INT (ROW_VALUES(row) + 0);
dbf->free_result (dbh, res);
if(*loc_nr == 0){
LM_ERR("No location in DB?!\n");
return 1;
}
return 0;
}
开发者ID:kiryu,项目名称:kamailio,代码行数:60,代码来源:ul_db_handle.c
示例2: convert_row
/*
* Convert a row from result into db API representation
*/
int convert_row(db_con_t* _h, db_res_t* _res, db_row_t* _r)
{
unsigned long* lengths;
int i;
#ifndef PARANOID
if ((!_h) || (!_r) || (!_n)) {
log(L_ERR, "convert_row(): Invalid parameter value\n");
return -1;
}
#endif
ROW_VALUES(_r) = (db_val_t*)pkg_malloc(sizeof(db_val_t) * RES_COL_N(_res));
ROW_N(_r) = RES_COL_N(_res);
if (!ROW_VALUES(_r)) {
LOG(L_ERR, "convert_row(): No memory left\n");
return -1;
}
lengths = mysql_fetch_lengths(CON_RESULT(_h));
for(i = 0; i < RES_COL_N(_res); i++) {
if (str2val(RES_TYPES(_res)[i], &(ROW_VALUES(_r)[i]),
((MYSQL_ROW)CON_ROW(_h))[i], lengths[i]) < 0) {
LOG(L_ERR, "convert_row(): Error while converting value\n");
free_row(_r);
return -3;
}
}
return 0;
}
开发者ID:miettal,项目名称:armadillo420_standard,代码行数:33,代码来源:db_row.c
示例3: bdb_free_result
/*
* Free all memory allocated by get_result
*/
int bdb_free_result(db_con_t* _h, db_res_t* _r)
{
db_row_t* r;
db_val_t* v;
int i, j;
if (!_r) {
#ifdef BDB_EXTRA_DEBUG
LOG(L_NOTICE, "BDB:bdb_free_result: NULL pointer\n");
#endif
return 0;
}
for (i = 0; i < RES_ROW_N(_r); i++) {
r = &(RES_ROWS(_r)[i]);
for (j = 0; j < RES_COL_N(_r); j++) {
v = &(ROW_VALUES(r)[j]);
if (VAL_TYPE(v) == DB_STRING || VAL_TYPE(v) == DB_STR || VAL_TYPE(v) == DB_BLOB) {
free(VAL_STR(v).s);
}
}
free(ROW_VALUES(r));
}
free(RES_ROWS(_r));
for (i = 0; i < RES_COL_N(_r); i++) {
pkg_free((void *)RES_NAMES(_r)[i]);
}
pkg_free(RES_NAMES(_r));
pkg_free(RES_TYPES(_r));
pkg_free(_r);
return 0;
}
开发者ID:4N7HR4X,项目名称:kamailio,代码行数:38,代码来源:bdb_base.c
示例4: free_row
/*
* Release memory used by row
*/
int free_row(db_row_t* _r)
{
#ifndef PARANOID
if (!_r) {
LOG(L_ERR, "free_row(): Invalid parameter value\n");
return -1;
}
#endif
if (ROW_VALUES(_r)) pkg_free(ROW_VALUES(_r));
return 0;
}
开发者ID:miettal,项目名称:armadillo420_standard,代码行数:14,代码来源:db_row.c
示例5: load_user_carrier
int load_user_carrier(str * user, str * domain) {
db1_res_t * res;
db_key_t cols[1];
db_key_t keys[2];
db_val_t vals[2];
db_op_t op[2];
int id;
int use_domain = cfg_get(carrierroute, carrierroute_cfg, use_domain);
if (!user || (use_domain && !domain)) {
LM_ERR("NULL pointer in parameter\n");
return -1;
}
cols[0] = subscriber_columns[SUBSCRIBER_CARRIER_COL];
keys[0] = subscriber_columns[SUBSCRIBER_USERNAME_COL];
op[0] = OP_EQ;
VAL_TYPE(vals) = DB1_STR;
VAL_NULL(vals) = 0;
VAL_STR(vals) = *user;
keys[1] = subscriber_columns[SUBSCRIBER_DOMAIN_COL];
op[1] = OP_EQ;
VAL_TYPE(vals+1) = DB1_STR;
VAL_NULL(vals+1) = 0;
VAL_STR(vals+1) = *domain;
if (carrierroute_dbf.use_table(carrierroute_dbh, &subscriber_table) < 0) {
LM_ERR("can't use table\n");
return -1;
}
if (carrierroute_dbf.query(carrierroute_dbh, keys, op, vals, cols, use_domain ? 2 : 1, 1, NULL, &res) < 0) {
LM_ERR("can't query database\n");
return -1;
}
if (RES_ROW_N(res) == 0) {
carrierroute_dbf.free_result(carrierroute_dbh, res);
return 0;
}
if (VAL_NULL(ROW_VALUES(RES_ROWS(res)))) {
carrierroute_dbf.free_result(carrierroute_dbh, res);
return 0;
}
id = VAL_INT(ROW_VALUES(RES_ROWS(res)));
carrierroute_dbf.free_result(carrierroute_dbh, res);
return id;
}
开发者ID:AndyJRobinson,项目名称:kamailio,代码行数:51,代码来源:cr_db.c
示例6: load_user_carrier
int load_user_carrier(str * user, str * domain) {
db_res_t * res;
db_key_t cols[1];
db_key_t keys[2];
db_val_t vals[2];
db_op_t op[2];
int id;
if (!user || (use_domain && !domain)) {
LM_ERR("NULL pointer in parameter\n");
return -1;
}
cols[0] = subscriber_columns[SUBSCRIBER_CARRIER_COL];
keys[0] = subscriber_columns[SUBSCRIBER_USERNAME_COL];
op[0] = OP_EQ;
vals[0].type = DB_STR;
vals[0].nul = 0;
vals[0].val.str_val = *user;
keys[1] = subscriber_columns[SUBSCRIBER_DOMAIN_COL];
op[1] = OP_EQ;
vals[1].type = DB_STR;
vals[1].nul = 0;
vals[1].val.str_val = *domain;
if (dbf.use_table(dbh, &subscriber_table) < 0) {
LM_ERR("can't use table\n");
return -1;
}
if (dbf.query(dbh, keys, op, vals, cols, use_domain ? 2 : 1, 1, NULL, &res) < 0) {
LM_ERR("can't query database\n");
return -1;
}
if (RES_ROW_N(res) == 0) {
dbf.free_result(dbh, res);
return 0;
}
if (VAL_NULL(ROW_VALUES(RES_ROWS(res)))) {
dbf.free_result(dbh, res);
return 0;
}
id = VAL_INT(ROW_VALUES(RES_ROWS(res)));
dbf.free_result(dbh, res);
return id;
}
开发者ID:Enigmedia,项目名称:opensips,代码行数:50,代码来源:route_db.c
示例7: db_allocate_row
/**
* Allocate memory for row value.
* \param _res result set
* \param _row filled row
* \return zero on success, negative on errors
*/
inline int db_allocate_row(const db1_res_t* _res, db_row_t* _row)
{
int len = sizeof(db_val_t) * RES_COL_N(_res);
ROW_VALUES(_row) = (db_val_t*)pkg_malloc(len);
if (!ROW_VALUES(_row)) {
LM_ERR("no private memory left\n");
return -1;
}
LM_DBG("allocate %d bytes for row values at %p\n", len, ROW_VALUES(_row));
memset(ROW_VALUES(_row), 0, len);
/* Save the number of columns in the ROW structure */
ROW_N(_row) = RES_COL_N(_res);
return 0;
}
开发者ID:MohammedYaseen,项目名称:kamailio,代码行数:22,代码来源:db_row.c
示例8: db_postgres_convert_row
/**
* Convert a row from the result query into db API representation
*/
int db_postgres_convert_row(const db_con_t* _h, db_res_t* _r, db_row_t* _row,
char **row_buf)
{
int col, len;
if (!_h || !_r || !_row) {
LM_ERR("invalid parameter value\n");
return -1;
}
/* Save the number of columns in the ROW structure */
ROW_N(_row) = RES_COL_N(_r);
/* For each column in the row */
for(col = 0; col < ROW_N(_row); col++) {
/* compute the len of the value */
if ( row_buf[col]==NULL || row_buf[col][0]=='\0')
len = 0;
else
len = strlen(row_buf[col]);
/* Convert the string representation into the value representation */
if (db_postgres_str2val(RES_TYPES(_r)[col], &(ROW_VALUES(_row)[col]),
row_buf[col], len) < 0) {
LM_ERR("failed to convert value\n");
LM_DBG("free row at %pn", _row);
db_free_row(_row);
return -3;
}
}
return 0;
}
开发者ID:mtulio,项目名称:mtulio,代码行数:35,代码来源:res.c
示例9: db_mysql_convert_row
/*!
* \brief Convert a row from result into DB API representation
* \param _h database connection
* \param _res database result in the DB API representation
* \param _r database result row
* \return 0 on success, -1 on failure
*/
int db_mysql_convert_row(const db1_con_t* _h, db1_res_t* _res, db_row_t* _r)
{
unsigned long* lengths;
int i;
if ((!_h) || (!_res) || (!_r)) {
LM_ERR("invalid parameter value\n");
return -1;
}
if (db_allocate_row(_res, _r) != 0) {
LM_ERR("could not allocate row");
return -2;
}
lengths = mysql_fetch_lengths(CON_RESULT(_h));
for(i = 0; i < RES_COL_N(_res); i++) {
if (db_str2val(RES_TYPES(_res)[i], &(ROW_VALUES(_r)[i]),
((MYSQL_ROW)CON_ROW(_h))[i], lengths[i], 0) < 0) {
LM_ERR("failed to convert value\n");
LM_DBG("free row at %p\n", _r);
db_free_row(_r);
return -3;
}
}
return 0;
}
开发者ID:billyyh,项目名称:kamailio,代码行数:35,代码来源:km_row.c
示例10: db_postgres_convert_row
/*!
* \brief Convert a row from the result query into db API representation
* \param _h database connection
* \param _r result set
* \param _row row
* \param row_buf row buffer
* \return 0 on success, negative on error
*/
int db_postgres_convert_row(const db1_con_t* _h, db1_res_t* _r, db_row_t* _row,
char **row_buf)
{
int col, col_len;
if (!_h || !_r || !_row) {
LM_ERR("invalid parameter value\n");
return -1;
}
if (db_allocate_row(_r, _row) != 0) {
LM_ERR("could not allocate row\n");
return -2;
}
/* For each column in the row */
for(col = 0; col < ROW_N(_row); col++) {
/* because it can contain NULL */
if (!row_buf[col]) {
col_len = 0;
} else {
col_len = strlen(row_buf[col]);
}
/* Convert the string representation into the value representation */
if (db_postgres_str2val(RES_TYPES(_r)[col], &(ROW_VALUES(_row)[col]),
row_buf[col], col_len) < 0) {
LM_ERR("failed to convert value\n");
LM_DBG("free row at %p\n", _row);
db_free_row(_row);
return -3;
}
}
return 0;
}
开发者ID:kamailio,项目名称:kamailio,代码行数:42,代码来源:km_res.c
示例11: db_mysql_convert_row
/**
* Convert a row from result into db API representation
*/
int db_mysql_convert_row(const db_con_t* _h, db_res_t* _res, db_row_t* _r)
{
unsigned long* lengths;
int i;
if ((!_h) || (!_res) || (!_r)) {
LM_ERR("invalid parameter value\n");
return -1;
}
/* Save the number of columns in the ROW structure */
ROW_N(_r) = RES_COL_N(_res);
if (CON_HAS_PS(_h)) {
for(i=0; i < CON_MYSQL_PS(_h)->cols_out; i++) {
if (db_mysql_str2val(RES_TYPES(_res)[i], &(ROW_VALUES(_r)[i]),
CON_PS_OUTCOL(_h, i).null?NULL:CON_PS_OUTCOL(_h, i).buf,
CON_PS_OUTCOL(_h,i).len) < 0) {
LM_ERR("failed to convert value from stmt\n");
db_free_row(_r);
return -3;
}
}
} else {
lengths = mysql_fetch_lengths(CON_RESULT(_h));
for(i = 0; i < RES_COL_N(_res); i++) {
if (db_mysql_str2val(RES_TYPES(_res)[i], &(ROW_VALUES(_r)[i]),
((MYSQL_ROW)CON_ROW(_h))[i], lengths[i]) < 0) {
LM_ERR("failed to convert value\n");
LM_DBG("free row at %p\n", _r);
db_free_row(_r);
return -3;
}
}
}
return 0;
}
开发者ID:KISSMonX,项目名称:opensips,代码行数:40,代码来源:row.c
示例12: get_max_no_of_db_id
int get_max_no_of_db_id(db_func_t * dbf, db1_con_t * dbh, int id){
db1_res_t * res;
db_row_t * row;
int query_len, max;
str tmp;
query_len = 50 + reg_table.len + id_col.len + num_col.len;
if(query_len > UL_DB_QUERY_LEN){
LM_ERR("weird: query too long.\n");
return -1;
}
memset(query, 0, UL_DB_QUERY_LEN);
if (sprintf(query,
"SELECT MAX(%.*s) "
"FROM %.*s "
"WHERE %.*s='%i'",
num_col.len, num_col.s,
reg_table.len, reg_table.s,
id_col.len, id_col.s, id) < 0) {
LM_ERR("could not print query\n");
return -1;
}
tmp.s = query;
tmp.len = strlen(query);
if(dbf->raw_query(dbh, &tmp, &res) < 0){
LM_ERR("weird: could not query %.*s.\n",
reg_table.len, reg_table.s);
return -1;
}
if(RES_ROW_N(res) == 0){
LM_ERR("weird: no data found for id %i\n", id);
dbf->free_result(dbh, res);
return -1;
}
row = RES_ROWS(res);
max = VAL_INT(ROW_VALUES(row));
dbf->free_result(dbh, res);
return max;
}
开发者ID:SibghatullahSheikh,项目名称:kamailio,代码行数:40,代码来源:ul_db_failover_func.c
示例13: bdb_row_match
int bdb_row_match(db_key_t* _k, db_op_t* _op, db_val_t* _v, int _n, db_res_t* _r, int* _lkey )
{
int i, res;
db_row_t* row = NULL;
if(!_r || !_lkey)
return 1;
row = RES_ROWS(_r);
for(i=0; i<_n; i++) {
res = bdb_cmp_val(&(ROW_VALUES(row)[_lkey[i]]), &_v[i]);
if(!_op || !strcmp(_op[i], OP_EQ)) {
if(res!=0)
return 0;
} else {
if(!strcmp(_op[i], OP_LT)) {
if(res!=-1)
return 0;
} else {
if(!strcmp(_op[i], OP_GT)) {
if(res!=1)
return 0;
} else {
if(!strcmp(_op[i], OP_LEQ)) {
if(res==1)
return 0;
} else {
if(!strcmp(_op[i], OP_GEQ)) {
if(res==-1)
return 0;
} else {
return res;
}}}}}
}
return 1;
}
开发者ID:KISSMonX,项目名称:opensips,代码行数:39,代码来源:bdb_res.c
示例14: db_unixodbc_convert_row
/*
* Convert a row from result into db API representation
*/
int db_unixodbc_convert_row(const db_con_t* _h, const db_res_t* _res,
db_row_t* _r, const unsigned long* lengths)
{
int i;
if ((!_h) || (!_res) || (!_r)) {
LM_ERR("invalid parameter value\n");
return -1;
}
/* Save the number of columns in the ROW structure */
ROW_N(_r) = RES_COL_N(_res);
for(i = 0; i < RES_COL_N(_res); i++) {
if (db_unixodbc_str2val(RES_TYPES(_res)[i], &(ROW_VALUES(_r)[i]),
((CON_ROW(_h))[i]), lengths[i]) < 0) {
LM_ERR("failed to convert value\n");
LM_DBG("free row at %p\n", _r);
db_free_row(_r);
return -3;
}
}
return 0;
}
开发者ID:UIKit0,项目名称:OpenSIPS,代码行数:26,代码来源:row.c
示例15: db_allocate_rows
/*
* Allocate storage for rows in existing
* result structure.
*/
int db_allocate_rows(db_res_t* _res, const unsigned int rows)
{
unsigned int i;
RES_ROWS(_res) = (struct db_row*)pkg_malloc
(rows * (sizeof(db_row_t) + sizeof(db_val_t) * RES_COL_N(_res)) );
if (!RES_ROWS(_res)) {
LM_ERR("no memory left\n");
return -1;
}
memset( RES_ROWS(_res), 0 ,
rows * (sizeof(db_row_t) + sizeof(db_val_t) * RES_COL_N(_res)));
LM_DBG("allocate %d bytes for result rows and values at %p\n",
(int)(rows * (sizeof(db_row_t) + sizeof(db_val_t) * RES_COL_N(_res))),
RES_ROWS(_res));
for( i=0 ; i<rows ; i++ )
/* the values of the row i */
ROW_VALUES( &(RES_ROWS(_res)[i]) ) =
((db_val_t*)(RES_ROWS(_res)+rows)) + RES_COL_N(_res)*i;
return 0;
}
开发者ID:vladpaiu,项目名称:opensips,代码行数:28,代码来源:db_res.c
示例16: dbt_convert_row
/*
* Convert a row from result into db API representation
*/
static int dbt_convert_row(db1_res_t* _res, db_row_t* _r, dbt_row_p _r1)
{
int i;
if (!_r || !_res || !_r1) {
LM_ERR("invalid parameter value\n");
return -1;
}
if (db_allocate_row(_res, _r) != 0) {
LM_ERR("could not allocate row");
return -2;
}
for(i = 0; i < RES_COL_N(_res); i++) {
(ROW_VALUES(_r)[i]).nul = _r1->fields[i].nul;
switch(RES_TYPES(_res)[i])
{
case DB1_INT:
VAL_INT(&(ROW_VALUES(_r)[i])) =
_r1->fields[i].val.int_val;
VAL_TYPE(&(ROW_VALUES(_r)[i])) = DB1_INT;
break;
case DB1_BIGINT:
LM_ERR("BIGINT not supported");
return -1;
case DB1_DOUBLE:
VAL_DOUBLE(&(ROW_VALUES(_r)[i])) =
_r1->fields[i].val.double_val;
VAL_TYPE(&(ROW_VALUES(_r)[i])) = DB1_DOUBLE;
break;
case DB1_STRING:
VAL_STR(&(ROW_VALUES(_r)[i])).s =
_r1->fields[i].val.str_val.s;
VAL_STR(&(ROW_VALUES(_r)[i])).len =
_r1->fields[i].val.str_val.len;
VAL_TYPE(&(ROW_VALUES(_r)[i])) = DB1_STRING;
VAL_FREE(&(ROW_VALUES(_r)[i])) = 0;
break;
case DB1_STR:
VAL_STR(&(ROW_VALUES(_r)[i])).s =
_r1->fields[i].val.str_val.s;
VAL_STR(&(ROW_VALUES(_r)[i])).len =
_r1->fields[i].val.str_val.len;
VAL_TYPE(&(ROW_VALUES(_r)[i])) = DB1_STR;
VAL_FREE(&(ROW_VALUES(_r)[i])) = 0;
break;
case DB1_DATETIME:
VAL_INT(&(ROW_VALUES(_r)[i])) =
_r1->fields[i].val.int_val;
VAL_TYPE(&(ROW_VALUES(_r)[i])) = DB1_DATETIME;
break;
case DB1_BLOB:
VAL_STR(&(ROW_VALUES(_r)[i])).s =
_r1->fields[i].val.str_val.s;
VAL_STR(&(ROW_VALUES(_r)[i])).len =
_r1->fields[i].val.str_val.len;
VAL_TYPE(&(ROW_VALUES(_r)[i])) = DB1_BLOB;
VAL_FREE(&(ROW_VALUES(_r)[i])) = 0;
break;
case DB1_BITMAP:
VAL_INT(&(ROW_VALUES(_r)[i])) =
_r1->fields[i].val.bitmap_val;
VAL_TYPE(&(ROW_VALUES(_r)[i])) = DB1_INT;
break;
default:
LM_ERR("val type [%d] not supported", RES_TYPES(_res)[i]);
return -1;
}
}
return 0;
}
开发者ID:AndreyRybkin,项目名称:kamailio,代码行数:82,代码来源:dbt_api.c
示例17: add_from_db
/**
* the initiating function
*/
int add_from_db(void)
{
imc_member_p member = NULL;
int i, j, flag;
db_key_t mq_result_cols[4], mquery_cols[2];
db_key_t rq_result_cols[4];
db_val_t mquery_vals[2];
db1_res_t *r_res= NULL;
db1_res_t *m_res= NULL;
db_row_t *m_row = NULL, *r_row = NULL;
db_val_t *m_row_vals, *r_row_vals = NULL;
str name, domain;
imc_room_p room = NULL;
int er_ret = -1;
rq_result_cols[0] = &imc_col_name;
rq_result_cols[1] = &imc_col_domain;
rq_result_cols[2] = &imc_col_flag;
mq_result_cols[0] = &imc_col_username;
mq_result_cols[1] = &imc_col_domain;
mq_result_cols[2] = &imc_col_flag;
mquery_cols[0] = &imc_col_room;
mquery_vals[0].type = DB1_STR;
mquery_vals[0].nul = 0;
if(imc_dbf.use_table(imc_db, &rooms_table)< 0)
{
LM_ERR("use_table failed\n");
return -1;
}
if(imc_dbf.query(imc_db,0, 0, 0, rq_result_cols,0, 3, 0,&r_res)< 0)
{
LM_ERR("failed to querry table\n");
return -1;
}
if(r_res==NULL || r_res->n<=0)
{
LM_INFO("the query returned no result\n");
if(r_res) imc_dbf.free_result(imc_db, r_res);
r_res = NULL;
return 0;
}
LM_DBG("found %d rooms\n", r_res->n);
for(i =0 ; i< r_res->n ; i++)
{
/*add rooms*/
r_row = &r_res->rows[i];
r_row_vals = ROW_VALUES(r_row);
name.s = r_row_vals[0].val.str_val.s;
name.len = strlen(name.s);
domain.s = r_row_vals[1].val.str_val.s;
domain.len = strlen(domain.s);
flag = r_row_vals[2].val.int_val;
room = imc_add_room(&name, &domain, flag);
if(room == NULL)
{
LM_ERR("failed to add room\n ");
goto error;
}
/* add members */
if(imc_dbf.use_table(imc_db, &members_table)< 0)
{
LM_ERR("use_table failed\n ");
goto error;
}
mquery_vals[0].val.str_val= room->uri;
if(imc_dbf.query(imc_db, mquery_cols, 0, mquery_vals, mq_result_cols,
1, 3, 0, &m_res)< 0)
{
LM_ERR("failed to querry table\n");
goto error;
}
if(m_res==NULL || m_res->n<=0)
{
LM_INFO("the query returned no result\n");
er_ret = 0;
goto error; /* each room must have at least one member*/
}
for(j =0; j< m_res->n; j++)
{
m_row = &m_res->rows[j];
m_row_vals = ROW_VALUES(m_row);
name.s = m_row_vals[0].val.str_val.s;
//.........这里部分代码省略.........
开发者ID:lbalaceanu,项目名称:kamailio,代码行数:101,代码来源:imc.c
示例18: b2b_logic_restore
int b2b_logic_restore(void)
{
int i;
int nr_rows;
int _time;
db_res_t *result= NULL;
db_row_t *rows = NULL;
db_val_t *row_vals= NULL;
b2bl_tuple_t tuple;
str b2bl_key;
str scenario_id;
b2bl_entity_id_t bridge_entities[3];
str* params[MAX_SCENARIO_PARAMS];
if(b2bl_db == NULL)
{
LM_DBG("NULL database connection\n");
return 0;
}
if(b2bl_dbf.use_table(b2bl_db, &b2bl_dbtable)< 0)
{
LM_ERR("sql use table failed\n");
return -1;
}
if (DB_CAPABILITY(b2bl_dbf, DB_CAP_FETCH))
{
if(b2bl_dbf.query(b2bl_db, 0, 0, 0, qcols, 0,
DB_COLS_NO, 0, 0) < 0)
{
LM_ERR("Error while querying (fetch) database\n");
return -1;
}
if(b2bl_dbf.fetch_result(b2bl_db,&result,B2BL_FETCH_SIZE)<0)
{
LM_ERR("fetching rows failed\n");
return -1;
}
}
else
{
if (b2bl_dbf.query(b2bl_db, 0, 0, 0, qcols, 0,
DB_COLS_NO, 0, &result) < 0)
{
LM_ERR("querying presentity\n");
return -1;
}
}
nr_rows = RES_ROW_N(result);
do {
LM_DBG("loading [%i] records from db\n", nr_rows);
rows = RES_ROWS(result);
/* for every row */
for(i=0; i<nr_rows; i++)
{
row_vals = ROW_VALUES(rows +i);
memset(&tuple, 0, sizeof(b2bl_tuple_t));
b2bl_key.s = (char*)row_vals[0].val.string_val;
b2bl_key.len = b2bl_key.s?strlen(b2bl_key.s):0;
tuple.key = &b2bl_key;
if(row_vals[1].val.string_val)
{
scenario_id.s = (char*)row_vals[1].val.string_val;
scenario_id.len = strlen(scenario_id.s);
tuple.scenario = get_scenario_id(&scenario_id);
}
memset(bridge_entities, 0, 3*sizeof(b2bl_entity_id_t));
memset(params, 0, MAX_SCENARIO_PARAMS* sizeof(str*));
if(row_vals[2].val.string_val)
{
tuple.scenario_params[0].s =(char*)row_vals[2].val.string_val;
tuple.scenario_params[0].len = strlen(tuple.scenario_params[0].s);
params[0] = &tuple.scenario_params[0];
}
if(row_vals[3].val.string_val)
{
tuple.scenario_params[1].s =(char*)row_vals[3].val.string_val;
tuple.scenario_params[1].len = strlen(tuple.scenario_params[1].s);
params[1] = &tuple.scenario_params[1];
}
if(row_vals[4].val.string_val)
{
tuple.scenario_params[2].s =(char*)row_vals[4].val.string_val;
tuple.scenario_params[2].len = strlen(tuple.scenario_params[2].s);
params[2] = &tuple.scenario_params[2];
}
if(row_vals[5].val.string_val)
{
tuple.scenario_params[3].s =(char*)row_vals[5].val.string_val;
tuple.scenario_params[3].len = strlen(tuple.scenario_params[3].s);
params[3] = &tuple.scenario_params[3];
}
if(row_vals[6].val.string_val)
{
//.........这里部分代码省略.........
开发者ID:KISSMonX,项目名称:opensips,代码行数:101,代码来源:b2bl_db.c
示例19: load_sca_info_from_db
static int load_sca_info_from_db(void)
{
db_res_t * res = NULL;
db_val_t * values;
db_row_t * rows;
int i, j, nr_rows;
unsigned int valid_record;
unsigned int n_result_cols = 0;
unsigned int shared_line_col, watchers_col;
unsigned int app_shared_entity_col[MAX_APPEARANCE_INDEX];
unsigned int app_call_state_col[MAX_APPEARANCE_INDEX];
unsigned int app_call_info_uri_col[MAX_APPEARANCE_INDEX];
unsigned int app_call_info_appearance_uri_col[MAX_APPEARANCE_INDEX];
unsigned int app_b2bl_key_col[MAX_APPEARANCE_INDEX];
db_key_t q_cols[SCA_TABLE_TOTAL_COL_NO];
str shared_line, watchers_csv;
//str_lst_t *watchers;
//unsigned int size, watcher_size, watchers_no;
//unsigned int size;
unsigned int hash_index;
//char *p;
b2b_sca_record_t *record;
b2b_sca_call_t *call;
unsigned int shared_entity, appearance_index, call_state;
str call_info_uri, call_info_apperance_uri, b2bl_key;
b2bl_cb_ctx_t *cb_params;
if(use_sca_table()) return -1;
q_cols[shared_line_col = n_result_cols++] = &shared_line_column;
q_cols[watchers_col = n_result_cols++] = &watchers_column;
for (i=0; i<MAX_APPEARANCE_INDEX; i++) {
q_cols[app_shared_entity_col[i] = n_result_cols++] = &app_shared_entity_column[i];
q_cols[app_call_state_col[i] = n_result_cols++] = &app_call_state_column[i];
q_cols[app_call_info_uri_col[i] = n_result_cols++] = &app_call_info_uri_column[i];
q_cols[app_call_info_appearance_uri_col[i] = n_result_cols++] =
&app_call_info_appearance_uri_column[i];
q_cols[app_b2bl_key_col[i] = n_result_cols++] = &app_b2bl_key_column[i];
}
/* select the whole tabel and all the columns */
if (DB_CAPABILITY(sca_dbf, DB_CAP_FETCH)) {
if(sca_dbf.query(sca_db_handle, 0, 0, 0, q_cols, 0,
SCA_TABLE_TOTAL_COL_NO, 0, 0) < 0) {
LM_ERR("Error while querying (fetch) database\n");
return -1;
}
if(sca_dbf.fetch_result(sca_db_handle, &res, SCA_FETCH_SIZE)<0){
LM_ERR("fetching rows failed\n");
return -1;
}
} else {
if(sca_dbf.query(sca_db_handle, 0, 0, 0, q_cols, 0,
SCA_TABLE_TOTAL_COL_NO, 0, &res) < 0) {
LM_ERR("Error while querying database\n");
return -1;
}
}
nr_rows = RES_ROW_N(res);
do {
LM_DBG("loading [%i] records from db\n", nr_rows);
rows = RES_ROWS(res);
/* for every row/record */
for(i=0; i<nr_rows; i++){
values = ROW_VALUES(rows + i);
if (VAL_NULL(values+shared_line_col) || VAL_NULL(values+watchers_col)) {
LM_ERR("columns [%.*s] or/and [%.*s] cannot be null -> skipping\n",
shared_line_column.len, shared_line_column.s,
watchers_column.len, watchers_column.s);
continue;
}
shared_line.s = (char*)values[shared_line_col].val.string_val;
shared_line.len = strlen(shared_line.s);
watchers_csv.s = (char*)values[watchers_col].val.string_val;
watchers_csv.len = strlen(watchers_csv.s);
record = restore_record(&shared_line, &watchers_csv);
if (record == NULL)
goto error;
hash_index = core_hash(&shared_line, NULL, b2b_sca_hsize);
j = 0;
while (j < MAX_APPEARANCE_INDEX) {
if( VAL_NULL(values + app_shared_entity_col[j]) ||
VAL_NULL(values + app_call_state_col[j]) ||
VAL_NULL(values + app_call_info_uri_col[j]) ||
VAL_NULL(values + app_call_info_appearance_uri_col[j]) ||
VAL_NULL(values + app_b2bl_key_col[j]) ) {
goto cont;
}
appearance_index = j + 1;
/* 1 - get shared_entity */
shared_entity = values[app_shared_entity_col[j]].val.int_val;
if (shared_entity!=0 && shared_entity!=1) {
LM_ERR("Unexpected shared_entity [%d] "
//.........这里部分代码省略.........
开发者ID:AndreiPlesa,项目名称:opensips,代码行数:101,代码来源:sca_db_handler.c
示例20: dp_load_db
/*load rules from DB*/
int dp_load_db(void)
{
int i, nr_rows;
db1_res_t * res = 0;
db_val_t * values;
db_row_t * rows;
db_key_t query_cols[DP_TABLE_COL_NO] = {
&dpid_column, &pr_column,
&match_op_column, &match_exp_column, &match_len_column,
&subst_exp_column, &repl_exp_column, &attrs_column };
db_key_t order = &pr_column;
dpl_node_t *rule;
LM_DBG("init\n");
if( (*crt_idx) != (*next_idx)){
LM_WARN("a load command already generated, aborting reload...\n");
return 0;
}
if (dp_dbf.use_table(dp_db_handle, &dp_table_name) < 0){
LM_ERR("error in use_table %.*s\n", dp_table_name.len, dp_table_name.s);
return -1;
}
if (DB_CAPABILITY(dp_dbf, DB_CAP_FETCH)) {
if(dp_dbf.query(dp_db_handle,0,0,0,query_cols, 0,
DP_TABLE_COL_NO, order, 0) < 0){
LM_ERR("failed to query database!\n");
return -1;
}
if(dp_dbf.fetch_result(dp_db_handle, &res, dp_fetch_rows)<0) {
LM_ERR("failed to fetch\n");
if (res)
dp_dbf.free_result(dp_db_handle, res);
return -1;
}
} else {
/*select the whole table and all the columns*/
if(dp_dbf.query(dp_db_handle,0,0,0,query_cols, 0,
DP_TABLE_COL_NO, order, &res) < 0){
LM_ERR("failed to query database\n");
return -1;
}
}
nr_rows = RES_ROW_N(res);
*next_idx = ((*crt_idx) == 0)? 1:0;
destroy_hash(*next_idx);
if(nr_rows == 0){
LM_WARN("no data in the db\n");
goto end;
}
do {
for(i=0; i<RES_ROW_N(res); i++){
rows = RES_ROWS(res);
values = ROW_VALUES(rows+i);
if((rule = build_rule(values)) ==0 )
goto err2;
if(add_rule2hash(rule , *next_idx) != 0)
goto err2;
}
if (DB_CAPABILITY(dp_dbf, DB_CAP_FETCH)) {
if(dp_dbf.fetch_result(dp_db_handle, &res, dp_fetch_rows)<0) {
LM_ERR("failure while fetching!\n");
if (res)
dp_dbf.free_result(dp_db_handle, res);
return -1;
}
} else {
break;
}
} while(RES_ROW_N(res)>0);
end:
/*update data*/
*crt_idx = *next_idx;
list_hash(*crt_idx);
dp_dbf.free_result(dp_db_handle, res);
return 0;
err2:
if(rule) destroy_rule(rule);
destroy_hash(*next_idx);
dp_dbf.free_result(dp_db_handle, res);
*next_idx = *crt_idx;
return -1;
}
开发者ID:adubovikov,项目名称:kamailio,代码行数:98,代码来源:dp_db.c
注:本文中的ROW_VALUES函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论