2008年2月29日金曜日

DataTable.Select メソッドでシステムエラー発生

DataTable 内に RowState が Unchange の行と Added の行が存在する場合に、DataTable.Select メソッドを実行すると、”アクセスするOriginalデータがありません”と言われてシステムエラーとなる。もちろん、Modified と Added が混在する場合も同様。(Unchange と Modified については未検証)
ただし、全行が同一の RowState である場合は、DataTable.Select メソッドは成功する。

DataGrid に追加された行に連番を振ろうとして DataTable.Select(hoge = Max(hoge)) としてたのだけど、結局、hoge 列の値を全て List に突っ込んでソート・・・なんだかなぁ。

2008年2月26日火曜日

Windows認証でのDB接続文字列

普段仕事場では接続文字列としてユーザーIDとパスワードを指定しているため、

"Data Source=DBServer;Initial Catlog=pubs;User ID=XXX;Password=hoge"

と記述している。

しかしセキリュティの観点からすると、Windows認証を用いてDBへ接続すべきで、
その場合の記述は以下の通り。
"Data Source=DBServer;Initial Catlog=pubs;Integrated Security=SSPI"
Integrated Security を SSPI または true に設定することで Windows 統合認証でアクセスすることができる。」のだそうで。

初めてやってみたけど、ちゃんと接続されると嬉しい^^

2008年2月23日土曜日

DataTable.Select メソッドでの集計関数の使い方

データテーブルからMAX値を取ろうとして以下のように書いたのだけれど、

DataTable dt = new DataTable()
DataRow[] rows = dt.Select("Max(ID)")

” Boolean 型はうんぬんかんぬん・・・”と言ったエラーが出て全然上手くいかない。

困り果てて @IT を見てみると、

DataRow[] rows = dt.Select("ID = Max(ID)")

なんだそうで。条件句を指定する場合と同じ記法でした。
これで全体の中でMax値を持った行コレクションが返ってきます。

DataColumn.Expression プロパティのページ見ても分からなかったよ・・・orz

2008年2月22日金曜日

WebServiceとして定義されているメソッドの引数の型について

自分で作成したクラスを WebService として定義されたメソッドの引数とした場合、実際にアプリケーションから呼び出そうとすると、 WebReferences 配下のフォルダ名が、その引数のネームスペースとして先頭についてしまう。これは VisualStudio が Reference.vb を自動生成した事による。回避策としては、 Reference.vb ファイルを手動で書き直すこと。

ex)

自作クラス:Nao.Hoge
WebServiceメソッド:GetName(Nao.Hoge obj)
WebReferences 配下のフォルダ名:Men

とした場合に、

Nao.Hoge obj = new Nao.Hoge()

GetName(obj)

とするとエラーとなってしまう。

Reference.vb 内で、 GetName(Men.Nao.Hoge obj) と定義されているため。

どうやら ArrayList 型を引数としても、Object 型に自動変換されるようで・・・。加えて、引数の型をスーパークラスとして、実際にはサブクラスを引き渡した場合も、型が不一致のためエラーとなってしまいます。

WebService にポリモーフィズムの概念は無いのかな???

2008年2月21日木曜日

ノータッチデプロイメントでのアセンブリのダウンロード先

Gacutil.exeでダウンロードされたファイルを確認したのは覚えていたんだけど、グローバルアセンブリキャッシュには無い。じゃあ実際はどこにあるのかと言うと、アセンブリダウンロードキャッシュってとこに配置されるんだと。
.NETアプリケーション自動更新技術の比較

Gacutil.exeはグローバルアセンブリキャッシュのみを対象にしてると思ってたけど、/ldl オプションを付けて実行すると、ダウンロードされたファイルのキャッシュが表示されます。
グローバル アセンブリ キャッシュ ツール