ref: babf901b4a508c3ec5d1f89655f10377bbdf9637
dir: /module/db.m/
DB : module
{
PATH : con "/dis/lib/db.dis";
# Open the connection to the DB server
# returns (New handle, "") or (nil, "Error Message")
#
open: fn(addr, username, password, dbname: string) :
(ref DB_Handle, list of string);
#
# Opens a connection to an Inferno on the database machine, with the
# specified level of security.
#
connect : fn(addr, alg : string) : (ref Sys->FD, string);
#
# Mounts the file descriptor on dir, then opens the database.
#
dbopen: fn(fd : ref Sys->FD, username, password, dbname : string) :
(ref DB_Handle, list of string);
DB_Handle : adt
{
#
# Open another SQL stream for the same connection.
#
SQLOpen : fn(oldh : self ref DB_Handle) : (int, ref DB_Handle);
SQLClose : fn(dbh : self ref DB_Handle) : int;
# Execute the SQL command
# returns (0, "") or (error code, "Message")
#
SQL: fn(handle: self ref DB_Handle, command: string)
: (int, list of string);
# Check the number of columns of last select command
#
columns: fn(handle: self ref DB_Handle): int;
# Fetch the next row of the selection results.
# returns current row number, or 0
#
nextRow: fn(handle: self ref DB_Handle): int;
# Read the data of column[i] of current row
#
read: fn(handle: self ref DB_Handle, column: int)
: (int, array of byte);
# Write data to be used for parameter[i]
#
write: fn(handle: self ref DB_Handle, column: int,
fieldval: array of byte) : int;
# Title of the column[i]
#
columnTitle: fn(handle: self ref DB_Handle, column: int)
: string;
#error message associated with last command
#
errmsg: fn(handle: self ref DB_Handle): string;
datafd : ref Sys->FD;
sqlconn:int;
sqlstream : int;
lock : chan of int;
};
};