DBD-NET
view release on metacpan or search on metacpan
dbdnet/NET.xs view on Meta::CPAN
void
_login(dbh, host, dbname, user, pass)
SV * dbh
char * host
char * dbname
char * user
char * pass
CODE:
ST(0) = dbd_db_login(dbh, host, dbname, user, pass) ? &sv_yes : &sv_no;
void
commit(dbh)
SV * dbh
CODE:
ST(0) = dbd_db_commit(dbh) ? &sv_yes : &sv_no;
void
rollback(dbh)
SV * dbh
CODE:
ST(0) = dbd_db_rollback(dbh) ? &sv_yes : &sv_no;
void
STORE(dbh, keysv, valuesv)
SV * dbh
SV * keysv
SV * valuesv
CODE:
if (!dbd_db_STORE(dbh, keysv, valuesv)) {
/* XXX hand-off to DBI for possible processing */
croak("Can't set %s->{%s}: unrecognised attribute",
SvPV(dbh,na), SvPV(keysv,na));
}
ST(0) = &sv_undef; /* discarded anyway */
void
FETCH(dbh, keysv)
SV * dbh
SV * keysv
CODE:
SV *valuesv = dbd_db_FETCH(dbh, keysv);
if (!valuesv) {
/* XXX hand-off to DBI for possible processing */
croak("Can't get %s->{%s}: unrecognised attribute",
SvPV(dbh,na), SvPV(keysv,na));
}
ST(0) = valuesv; /* dbd_db_FETCH did sv_2mortal */
void
disconnect(dbh)
SV * dbh
CODE:
D_imp_dbh(dbh);
if ( !DBIc_ACTIVE(imp_dbh) ) {
if (DBIc_WARN(imp_dbh) && !dirty)
warn("disconnect: already logged off!");
XSRETURN_YES;
}
/* Check for disconnect() being called whilst refs to cursors */
/* still exists. This needs some more thought. */
/* XXX We need to track DBIc_ACTIVE children not just all children */
if (DBIc_KIDS(imp_dbh) && DBIc_WARN(imp_dbh) && !dirty) {
warn("disconnect(%s) invalidates %d associated cursor(s)",
SvPV(dbh,na), DBIc_KIDS(imp_dbh));
}
ST(0) = dbd_db_disconnect(dbh) ? &sv_yes : &sv_no;
void
DESTROY(dbh)
SV * dbh
CODE:
D_imp_dbh(dbh);
ST(0) = &sv_yes;
if (!DBIc_IMPSET(imp_dbh)) { /* was never fully set up */
if (DBIc_WARN(imp_dbh) && !dirty)
warn("Database handle %s DESTROY ignored - never set up",
SvPV(dbh,na));
return;
}
if (DBIc_ACTIVE(imp_dbh)) {
if (DBIc_WARN(imp_dbh) && !dirty)
warn("Database handle destroyed without explicit disconnect");
dbd_db_disconnect(dbh);
}
dbd_db_destroy(dbh);
MODULE = DBD::NET PACKAGE = DBD::NET::st
void
_prepare(sth, statement)
SV * sth
char * statement
CODE:
ST(0) = dbd_st_prepare(sth, statement) ? &sv_yes : &sv_no;
void
rows(sth)
SV * sth
CODE:
D_imp_sth(sth);
# XST_mIV(0, (IV)imp_sth->cda->rpc);
void
execute(sth, ...)
SV * sth
CODE:
D_imp_sth(sth);
/* Handle binding any supplied values to placeholders */
if (items > 1) {
char name[16];
int i, error;
if (items-1 != HvKEYS(imp_sth->bind_names)) {
do_error(0);
XSRETURN_UNDEF;
}
for(i=1, error=0; i < items ; ++i) {
sprintf(name, ":p%d", i);
if (dbd_bind_ph(sth, imp_sth, name, ST(i)))
++error;
( run in 0.436 second using v1.01-cache-2.11-cpan-df04353d9ac )