記事カテゴリ

ユーザー機能


 2024年4月25日(木) 13:37 JST

Visual Studio 2005 に挑戦!

  • 投稿者:
  • 表示回数
    4,585
今週から VS 2005 による C# でのプログラムの勉強を開始した。<やっとか!

仕事で C# か Java を使うことになっているため、とりあえず Java はちょっと遠慮させていただきたいので、C# を始めている。(仕事での担当者の意向にもよる。その上司は Java 派の様なのだが...)

これまでにも、VS2002?3? を購入したり、先日の MSC2005 で本を買ったりしてはいたのだが、やはり気持ちがのらない。でも今回は仕事なのでがんばるつもりで...

で、本格的な開発に入る前の調査として C# & .Net Framework 2.0 での開発に問題がないのか?と言うところが年内の仕事になっている。
調査内容をブレイクダウンしてみると...
  1. Database が Postgres V8.1 に決定したので、それに接続が可能か?(できればネイティブで)
  2. O/R マッピングが使用したいとの要望から、Nhibernate が VS2005 で動作するか?

上記に沿って二日ほど調べたのだが、Postgres に付属している PostgresSQL 用の .Net Data Provider は .Net Framework 1.1 用しか提供されていないようだ。
これでは最初の要件が達成できないので、Google で調べてみる。
スポンサーに CoreLab へのリンクがあった。早速、ここの製品である PostgreSQLDirect .NETを 試してみる。(6フィールドまでに限定された試用版がある。)
サンプルも付属していたので、それを元に試してみる。試してみると結構簡単につながった。つながったけど、日本語が文字化けしている。たぶん Encoding の指定が正しくないと直感的に考え Encoding 指定を探すが見つからず、CoreLab のサイトのフォーラムから Unicode を使用したいと書いている投稿を見つけた。その投稿によると Unicode を使用する場合には Charset プロパティを使用するとのこと。このプロパティを "SJIS" に変更してみると問題は解決した。(ちなみに Postgre に付属の Npgsql を使用する場合には、接続文字列に Encoding=SJIS と指定するか、 接続後 SET CLIENT_ENCODING TO SJIS と SQL を発行するようです。ちなみに後者の方法は CoreLab のドライバでも有効でした。)

NHibaernate の方もダウンロードしてきて試してみる。こっちは @IT や CodeZine に記事があったのでそれを読んだ。
今回は特に CodeZine の「を利用してSQLを書かずにデータベースにアクセスする方法」を参考にさせていただいた。CodeZine では記事はふつうに非会員でも読めるが、サンプルは会員のみとなっているので、登録させていただいた。
こちらも、このサンプルのおかげで NHibernate が VS2005 上で動作することは確認できた。
しかし、必要な要件の (1)と(2)の組み合わせがうまくいかない。
NHibernate の接続文字列の設定が Npgsql のものしか提供されていない。だめ元で Npgsql 用に改造してみるが、つながらない。とここで、Npgsql への参照設定が抜けていたことに気づき、これを加えてみるがやはりうまくいかない。
CoreLab のフォーラムで投稿を検索してみる。他のドライバへの投稿を含め 3 投稿発見できたが、接続文字列の例はなく暗礁に乗り上げた格好だ。
この開発の着手が来年3月以降に予定しているので、それまでに Npgsql が .Net Framework 2.0 に対応してくれることを期待しつつ他を探している。

12/16 追記
SQL Server Express Edition も 無料なのに Postgre の選定理由はなに?
と思い聞いてみたら、SQL Server の無料版が商用 OK なのを知らなかったとか...
SQL Server も選択肢に入れてもらえることになったが、上司の部長が Java はではなく、単に アンチMS だったと言うことが判明...
SQL Sever も遠いのか...

トラックバック

このエントリのトラックバックURL:
https://www.blackcat.xyz/trackback.php/visual_studio_2

以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。