ソースコード上でのSQL
SQLを書くこと自体は苦じゃないのですが、プログラミング言語中では単なる文字列なのがちょっと。ツールを探してみてもSQLを苦手な開発者からSQLを隠ぺいさせる方向なモノが多く、SQLを書きまくりたいけど文字列じゃなくて、テーブルやカラムと言った単位で扱いたい、という要求に応えてくれるものがなかなかありません。仕方ないので自分でこさえてみましたが・・・
// 検索対象テーブル Table ord = new Table ("Orders","ord"); Table odd = new Table ("Order Details","odd"); Table prd = new Table ("Products","prd"); Table cst = new Table ("Customers","cst"); // テーブル結合 Relation r1 = new Join (ord,odd,new Using ("OrderID"), JoinType.Inner); Relation r2 = new Join (r1,prd,new Using ("ProductID"), JoinType.Inner); Relation r3 = new Join (r2,cst,new Using ("CustomerID"), JoinType.Inner); // クエリー作成 Query query = new Query (); query.From (r3); query.Where (new GreaterThan (prd.GetColumn ("UnitPrice"), new Literal (10000))); query.Select ( cst.GetColumns ("CustomerID","CustomerName"), ord.GetColumns ("OrderID","ShipCountry","ProductID"), prd.GetColumns ("ProductName"), odd.GetColumns ("UnitPrice","Quantity")); query.OrderBy (cst.GetColumn ("CustomerID")); // SQL文の取得 Console.WriteLine (query.Statement);
全然楽になりませんね。(^^;
Queryオブジェクトを別のQueryのFromに渡したりとか出来るのは便利なんですが、where条件を書くところが厳しいです。db4oのネイティブクエリが羨ましい・・・