|
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:
Sorry I don't know which branch it is related too. I've just done what Nathaniel has asked me for.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
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
[Prev in Thread] | Current Thread | [Next in Thread] |