Hi all,
is there any reference to new *db* API ?
In developer's guide, ch 8 there are old api.
Reading ser code, in particular auth_db module, some functions seems to
use valid database api.
I need only to do a query but it's hard to build correctly a query and
execute this, referencing only to some _similar_ code in some module.
What I need, and hope to be usefull for anybody, is a
template/guide/tutorial/documentation/dummy_example for a correct query
execution.
There is a snippet of the code :
471 static int db_example(char* db_url){
472 str result;
473 db_cmd_t *query = NULL;
474 db_res_t *result_t;
475 db_rec_t *row;
476
477 str id_column;
478 str value_column;
479 str table;
480 str id;
481
482 table.s = "value_att";
483 table.len = 10;
484 id_column.s = "id_value";
485 id_column.len = 9;
486 value_column.s = "value";
487 value_column.len = 5;
488 int len;
489
490 module_db_handle = db_ctx("module_db");
491 if (!module_db_handle) goto err;
492 if (db_add_db(module_db_handle, db_url) < 0) goto err;
493 if (db_connect(module_db_handle) < 0)
494 goto err;
495 else
496 LOG(L_INFO,"DB connected.\n");
497
498 /* Setup query */
499
500 db_fld_t match_with[] = {
501 { .name = id_column.s, .type = DB_INT },
502 { .name = NULL }
503 };
504 db_fld_t *result_cols = NULL;
505
506
507 len = sizeof(*result_cols);
508 result_cols = pkg_malloc(len);
509 if (!result_cols) {
510 ERR("can't allocate pkg mem\n");
511 return -1;
512 }
513 memset(result_cols, 0, len);
514
515 result_cols->name = value_column.s;
516 result_cols->type = DB_STR;
517
518 query = db_cmd(DB_GET, module_db_handle, table.s, result_cols,
match_with, NULL);
519
520 id.s="2";
521 id.len=2;
522 query->match[0].v.lstr = id;
if (db_exec(&result_t, query) < 0 ) {
525 ERR("Error while querying database\n");
526 return -1;
527 }
528
529 if (result_t) row = db_first(result_t);
530 else row=NULL;
531
532 while (row) {
533 if (IS_NULL((row)->fld[0]) || IS_NULL((row)->fld[1])) {
534
535 } else {
536 if ((row)->fld[1].v.int4 & DB_DISABLED) {
537 } else {
538 if ((row)->fld[1].v.int4 & DB_LOAD_SER) {
539 break;
540 }
541 }
542 }
543 row = db_next(result_t);
544 }
545
546 if (!row) {
547 DBG("Value not found\n");
548 return 1;
549 }
550
551 result.s = (row)->fld[0].v.cstr;
552 result.len = strlen(result.s);
553
554
555 return 0;
556
557
558
559
560 err:
561
562 if (module_db_handle) {
563 module_db_handle = NULL;
564 db_ctx_free(module_db_handle);
565 }
566
567 LOG(L_ERR,"Error while initializing database layer\n");
568 return -1;
569
570 }
I really hope to solve this problem because I don't want to use my sql
library when ser has his own database support.
Thanks in advance to anybody,
Francesco la Torre
_______________________________________________
Serdev mailing list
Serdev(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serdev