Adam Ruppe wrote:
string name;
int id;

db_statement.execute();

while(db_statement.next(id, name)) {
       // the variables id and name are now filled in with the row
}

That's nice too!

But, a real database has a lot of constraints on top of that -
field lengths, foreign keys, checks, and so on.

I tried two approaches: one was magic. Add stuff based on the names
and types, so assume "int id" is a primary key, for example.

Didn't work in practice. What about a table with a primary key
that spans two columns?

So, then I tried adding a bunch of attributes and templates, but
that felt like a buggy and incomplete SQL forced into D... didn't
feel like natural SQL nor D.



What approach did you take? I wonder if I didn't get anywhere because
I'm just so set in my old ways!

Please read my messages in "D2 postgresql interface - Phobos2?" thread (D.learn). There are examples of structs with arrays (postgres supports them); primary, unique and foreign keys. I've also managed to generate D's enums using CREATE TYPE in postgres :)


Maybe we could join our efforts and create kind of hybrid
DB library? :)

Indeed. Is your code on the internet somewhere?

Not yet. First, I must clean it from some messed up code :) Then I plan to publish it on github under Boost license.

Reply via email to