6 ms·
Sqlpp11 – A type safe SQL template library for C++
- paulkoer 12y agoThis is a really awesome library to generate typesafe sql queries right from the C++ source code. Example usage: auto res = db(select(foo.name, foo.hasFun) .from(foo) .where(foo.id > 17 and foo.name.like("%bar%"))); If you're writing SQL queries in C++ code check it out!
- boris 12y agoYou should show the definition of 'foo'. That's where things get ugly.
- enricosada 12y agothings usually get ugly with projection (one class = one select) or class reuse (mapping) this is code -> sql string -> exec -> code (mapping results) best approach (ihmo) is using: sql string -> exec -> results with type for input/output directly generated sql string (and check for types) like F# sql type provider ( http://fsprojects.github.io/FSharp.Data.SqlClient/ http://fsprojects.github.io/FSharp.Data.SqlClient/ ) [<Literal>] let query = " SELECT TOP(@TopN) FirstName, LastName, SalesYTD FROM Sales.vSalesPerson WHERE CountryRegionName = @regionName AND SalesYTD > @salesMoreThan ORDER BY SalesYTD " type SalesPersonQuery = SqlCommandProvider<query, connectionString> let cmd = new SalesPersonQuery() cmd.AsyncExecute(TopN = 3L, regionName = "United States", salesMoreThan = 1000000M) |> Async.RunSynchronously //output //seq // [("Pamela", "Ansman-Wolfe", 1352577.1325M); // ("David", "Campbell", 1573012.9383M); // ("Tete", "Mensa-Annan", 1576562.1966M)] everything typed, but: - without the need to define class for input / output - without learn a new functions - easy add database specific syntax
- _ZeD_ 12y agoIs there a java equivalent?
- xtacy 12y agoA similar library for Scala: http://squeryl.org/ http://squeryl.org/
- ExpiredLink 12y agoWhat has SQL done to deserve this?
- couchand 12y agoJust a few months ago I realized that you can hack CoffeeScript's syntax to embed DSLs directly. I wrote up a quick little proof-of-concept for SQL [0], HTML [1], and CSS [2]. Obviously the HTML one is inspired by the React syntax. I've always hated how easy it is to push SQL bugs into production, since it's so often just a string literal stuck in your code. AFAIC you don't really need the typing help, you just need to know that you didn't forget a damn comma somewhere. [0]: https://github.com/couchand/just-sql https://github.com/couchand/just-sql [1]: https://github.com/couchand/just-html https://github.com/couchand/just-html [2]: https://github.com/couchand/just-css https://github.com/couchand/just-css