monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fwd: Re: [Monotone-devel] Typesafe VA_ARGS replacement for database::ex


From: Vinzenz 'evilissimo' Feenstra
Subject: [Fwd: Re: [Monotone-devel] Typesafe VA_ARGS replacement for database::execute/fetch]
Date: Fri, 20 Jan 2006 15:47:29 +0100
User-agent: Thunderbird 1.5 (Windows/20051201)

Christof Petig schrieb:

Vinzenz 'evilissimo' Feenstra schrieb:
Hi,

I've attached the class query_args which can be used as VA_ARGS
replacement for the methods database::execute and database::fetch

a possible signature of database::execute
  void database::execute( query_args & args );

Thinkable usage will be something like this:    ( db is a object of
database )
db.execute( db.query("INSERT INTO TEST VALUES( ? , ? , ? , ? )") %
value1 % value2 % value 3 % value 4);
Let me know what you're thinking about it.

I prefer your (or boosts) % syntax over my std::vector variant.
IIRC this relates to the sqlite3.binary branch, doesn't it?

   Christof
Sorry I don't know which branch it is related too. I've just done what Nathaniel has asked me for.

We talked about it this night and decided not to give up the va_args. Instead we're using a struct now which helps us to identify the value. So we can now use SQLITE_STATIC as argument for sqlite3_bind_text and sqlite3_bind_blob and can figure out in the methode database::fetch what kind of parameter was given.

The usage for now is:
std::string query_ = "SELECT foo FROM bar where id = ?";
execute(query(query_), text(id) );

or
execute( "SELECT foo FROM bar where id = ?", text(id) );

There are to functions text() and blob()

text does take either char const* or std::string const &
blob does take either void const* and size in bytes, or char const* and size in bytes.

I'm sending the PATCH for it soon.


BR Vinzenz






reply via email to

[Prev in Thread] Current Thread [Next in Thread]