Home > 言語 > Visual Studio Archive

Visual Studio Archive

[C#] TableAdapter にトランザクション機能を実装するクラス

TableAdapterにトランザクションを実装
TableAdapterにトランザクションを実装

今は Visual C# 2005 Express Edition にて ADO.NET 2.0 Provider for SQLiteを利用してクライアントアプリの開発しています。

TableAdapterにてINSERTやupdateするとどうも更新が遅いので、Googleで調べたら

> http://journal.mycom.co.jp/special/2004/php5/007.html
> SQLiteでは明示的にトランザクションを開始しない限り、INSERT処理の前後に必ず”BEGIN”、”COMMIT”が実行される。

とのことでした。

で、色々試行錯誤して下記のVB記事を参考にC#&SQLite用のトランザクションの処理を追加。

TableAdapterにトランザクションを実装 / うなまな Blog
http://www.ailight.jp/blog/unaap/archive/2007/02/13/13566.aspx

ソースは次のとおりです。

Continue reading

[C#] ADO.NET 2.0 Provider for SQLite 1.0.43.0 ではまった…。

System.Data.SQLite (SQLite ADO.NET 2.0 Provider)
System.Data.SQLite (SQLite ADO.NET 2.0 Provider)

ことの始まりは、つい先日 SourceForge.net の RSS から ADO.NET 2.0 Provider for SQLite が 1.0.42.0 から 1.0.43.0 にバージョンアップしたのを知ったので、早速バージョンアップしてみました。

インストールも特に問題なく完了。SQLite3.4かぁ。ふーん。

でもって、開発中のアプリのコーディングを再開してしばらくすると、不可解なエラーが。

色々調べてみると、SQLのMAX関数やCOUNT関数で件数とかをチェックしているロジックが機能しない。intで返ってくるはずのところがstringになっていたり。それで変換できないエラーとか起こっている。なんじゃこれ!
ウーン、特に手を入れてないのにな…、と、ふと DataSet.Designer.cs を直接除いてみると、なんかおかしい。ん?

なんで COUNT で件数返すだけなのに return が object や string なんだ??

Continue reading

[Visual Studio][C#] Express Edition で ClickOnce を使用する際の注意点

Express Edition で ClickOnce を使用する際の注意点
Express Edition で ClickOnce を使用する際の注意点

VisualStudio の Express Edition で ClickOnce を使用する際の注意がまとめてありました。
.NET Framework 2.0 などの必須コンポーネントがExpress Editionでは普通にインストールしただけではPC内に生成されないので、ClickOnceでの配布を行おうとするとエラーになってしまうようです。
結論から言えば、ファイルをダウンロードして、本来のほかのエディションと同じように配布用のファイルを用意すれば問題ないとのことです。

でも、 ClickOnceでの配布って、実際の業務ではどうなんでしょう…。

(かくいう今はInno Setupでセットアップ作っての配布を考えていたりして:-) )

[C#] Convert VB.NET to C#

Convert VB.NET to C#
Convert VB.NET to C#

VB.NETのソースをC#のソースに自動変換してくれるサイトです。
ネットでサンプルを探していて、VB.NETのソースしかないけどC#だとどうなるんだろう、、、という時に使えそうです(^^)
まぁ、ソース解析しろ!!って話ですが、道具は便利に使うが一番、てことで。

逆にC#からVB.NETにも変換できるみたいですよ。

Convert C# to VB.NET

日本語(2バイト)のコメントや文字列が有るとうまく変換できなかったり化けるみたいなので、そこら辺だけ注意すれば、便利に使えると思います。

[C#] 画像の保存ではまった…

ここんところC#付けの毎日です。

とそんな中、C#のコーディングで何気ない所で詰まってしまったので、メモしてみます。
やりたいことは、

画像ファイルをダイアログからか、ドラッグ&ドロップで読み込み、コントロール(今回はボタンですが)に表示。
保存ボタンで特定の固定のファイル名で保存する。

というこれだけのことです。で、こんな簡単な所で2点詰まった…。

  1. ImageクラスのFromFileメソッドを用いて画像を読み込むと、プログラム終了するまでファイルロックされたままになり、Image.Save時にファイルがロック(使用中)になり上書きできない。
  2. ImageクラスのFromStreamメソッドを用いて画像を読み込むと、ロックは解消されるが、Image.Save時に「GDI+ で一般的なエラーが発生しました」となり、保存できない。

1点目の解決方法は、以下のとおり。

ImageクラスのFromFileメソッドを用いて画像を読み込むと、プログラム終了するまでファイルロックされたままになる。
というのが有るそうで、早速FromFile から FromStreamで読み込むように変更。

PictureBox に画像を表示する
http://jeanne.wankuma.com/tips/image/picturebox.html

「プログラムが終了するまで、ファイルがロックされたままになります」
とあちこちのC#入門サイトに書いてありますが、私の開発環境ではIDEも終了するまでファイルがロックされているようでした。

それを裏付ける(?)記述が以下にありました。

[PRB] PictureBox Image プロパティにファイルを設定すると、イメージ ファイルがロックさる
http://support.microsoft.com/default.aspx?scid=kb;ja;311754

てなかんじで、ふむふむ、ロックされなくなったぞ。

よし、できた!

…と、安心したのもつかの間、今度は、Image.Saveとすると、2点目の問題発生。

GDI+ で一般的なエラーが発生しました」orz..

色々調べてみても、何が原因かわからず途方にくれていたら、やはり同じことで詰まってる人はいるということのようです。

以下の所で解決策が見つかりました。

ImageクラスのFileStreamで読み込んだ画像の保存
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=15772&forum=7&6

FileStream fs;
fs = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);
Bitmap bmp = (Bitmap)System.Drawing.Bitmap.FromStream(fs);
fs.Close();
pictureBox1.Image =new Bitmap(bmp);

pictureBox1.Image.Save();

こんな感じで解決でした。
ポイントは、FileStreamメソッドでBitmapとして読み込めばSave時もOKってことですかね。

あ、C#素人なんで、用語とか適当かも…。

Home > 言語 > Visual Studio Archive

Translator
MicroAd
あわせて読みたい
あわせて読みたいブログパーツ
なかのひと
ドリコム ジョブボード
edita.jp
メタ情報
いろいろ。
AddClips

Return to page top