Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  SDB_QUERY (3)


sdb_init, sdb_open, sdb_query, sdb_close - the Simple Database Library.


See Also


#include <sdb.h>

void sdb_init();
char *sdb_open(char *url);
void sdb_close(char *id);
int sdb_query(char *url, char *query, int (*callback)(int, char **, void *), void *closure);


The SDB library allows applications to support multiple database management systems with negligeable overhead, in terms of code as well as system resources.

sdb_init() initializes the library and registers the database drivers. It is not necessary to call sdb_init explicitly, since it will be done automatically when needed.

sdb_open() opens a database connection that can be used for multiple queries. This is optional; calling sdb_query directly will simply open and close the connection for each query. sdb_open returns a connection id which is used in place of the url in calls to sdb_query.

sdb_query() calls the callback once for each row returned. No rows does not indicate an error condition. sdb_query returns the number of rows or -1 for error. The callback takes three arguments, an integer indicating the number of columns in the result, an array of pointers to the fields and a pointer to some arbitrary data that the callback might need. Values are always returned as strings.

sdb_close() closes the database connection opened by sdb_open.


This minimal program runs queries from the command line.

#include <stdio.h> #include <stdlib.h> #include <sdb.h>

static int callback(int n, char **p, void *closure) { int i; for (i = 0; i < n; i++) { printf("%s\t", p[i]); } printf("0); return 0; }

int main(int argc, char **argv) { if (argc != 3) { fprintf(stderr, "Usage: sdb_demo url query\n"); return EXIT_FAILURE; } sdb_query(argv[1], argv[2], callback, NULL); return EXIT_SUCCESS; }

This program can be used to authenticate Squid proxy users.

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sdb.h>

static int cb_db(int n, char **p, void *closure) { return 0; }

int main(int argc, char **argv) { char *url, query[1024]; int n; char buf[256]; char *user, *passwd, *p; setbuf(stdout, NULL); if (argc != 2) { fprintf(stderr, "Usage: sdb_auth url\n"); exit(1); } url = argv[1]; while (fgets(buf, 256, stdin) != NULL) { if ((p = strchr(buf, ’\n’)) != NULL) *p = ’\0’; /* strip \n */ if ((user = strtok(buf, " ")) == NULL) { printf("ERR\n"); continue; } if ((passwd = strtok(NULL, "")) == NULL) { printf("ERR\n"); continue; } sprintf(query, "select * from htpasswd " "where user = ’%s’ " "and passwd = ’%s’", user, passwd); n = sdb_query(url, query, cb_db, NULL); if (n < 1) { printf("ERR\n"); } else { printf("OK\n"); } } exit(0); }



Example clients in sdb_client.c and sdbd_client.c.


Copyright (c) 2000-2005 Ulric Eriksson <>

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the Licence, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.

You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Search for    or go to Top of page |  Section 3 |  Main Index

--> SDB (3) LOCAL

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.