[std.database]
Johann MacDonagh
johann.macdonagh.no at spam.gmail.com
Tue Oct 11 14:09:15 PDT 2011
On 10/11/2011 4:07 AM, Jacob Carlborg wrote:
>
> I think that the use of opDispatch and selecting with a struct should be
> available at the higher level interfaces and not in the low level
> interface.
>
What do you mean by this? Do you mean instead of having the opDispatch
in the Connection class, we'd have it in a separate struct / template /
other magic? This would allow us to utilize this method for other
sources of data, such as XML.
On the other hand though, this doesn't add a whole lot. Let's say we had
this code:
auto rows = db.execute("SELECT score, a.user FROM users a JOIN scores b
on a.user = b.user");
foreach (row; rows) {
writeln(to!int(row["score"]));
}
We could also add in a generic range operation that converts a range of
Variant[string] (a row) to a struct specified by the user. The code
would become:
auto rows = extractStructs!(MyStruct, db.execute("SELECT score, a.user
FROM users a JOIN scores b on a.user = b.user"));
foreach (row; rows) {
writeln(row.score);
}
I suppose I'm just remembering how much plumbing code had to be done
when accessing databases in C#. It sounds like doing this from D will be
much easier, even without my silly "LINQ" concept.
More information about the Digitalmars-d
mailing list