- PR -

コネクションのコピー

1
投稿者投稿内容
shimura
会議室デビュー日: 2006/06/21
投稿数: 2
投稿日時: 2006-06-21 10:01
VB.NETでADOからADO.NETの書き換えを行っています。
(Framework1.1)

書籍やHPで参考になるサンプルソースを探しているのですが、
あるHPでコネクションをCTYPEでキャストして、
cloneメソッドでコピーをしている箇所を見つけました。

自分でも調べたのですが、よくわかりませんでした。
そこでお聞きしたいのですが、

○どういう場合にコネクションのコピーが必要か?
 もしかして、トランザクションのコピーも可能か?

○コピーしたコネクションは、コピー元のコネクションを
開放したら、コピー先のコネクションの必要ないか?

そのソースでは、コピー元しか開放していませんでした。

勉強のために質問させて頂きました。

よろしくお願いします
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-06-21 10:21
引用:

○コピーしたコネクションは、コピー元のコネクションを
開放したら、コピー先のコネクションの必要ないか?

そのソースでは、コピー元しか開放していませんでした。


「値型と参照型」について調べてみるとよいと思います。
それぞれのコピー(代入)における動きがポイントです。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-06-21 10:27
引用:

書籍やHPで参考になるサンプルソースを探しているのですが、
あるHPでコネクションをCTYPEでキャストして、
cloneメソッドでコピーをしている箇所を見つけました。

○どういう場合にコネクションのコピーが必要か?
 もしかして、トランザクションのコピーも可能か?



Clone() を呼び出した結果、内部的に何が起こるかは各クラスの実装によって異なるため、そこから一般論は引き出すことは出来ません。

どういう意図があるのかは、Clone() したのがどんな型か分からないし、どんな場面でその操作を行ったのかもわからないので不明です。

好意的に想像を膨らませると、コピー元のコネクションと同じ接続文字列を使って、もうひとつ別のDB接続を張りたかったとか?

引用:

○コピーしたコネクションは、コピー元のコネクションを
開放したら、コピー先のコネクションの必要ないか?



これもそのクラスの実装次第です。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-06-21 10:40
引用:

引用:

○コピーしたコネクションは、コピー元のコネクションを
開放したら、コピー先のコネクションの必要ないか?



これもそのクラスの実装次第です。



あ、コネクションを含むクラスのクローンという頭で答えてしまいました。
その場合は、既定では単なるポインタの複製でいいんですよね?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-21 11:15
引用:

まどかさんの書き込み (2006-06-21 10:40) より:

あ、コネクションを含むクラスのクローンという頭で答えてしまいました。
その場合は、既定では単なるポインタの複製でいいんですよね?


どの Connection かわかりませんが、おそらく参照を示す値の複製でしょうね。
まあ、試せば、ShallowCopy か DeepCopy かはわかりますが...

# でも、フツーは絶対しない。(;^-^)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-06-21 12:26
引用:

あ、コネクションを含むクラスのクローンという頭で答えてしまいました。
その場合は、既定では単なるポインタの複製でいいんですよね?



か、どうかは実装次第です

コネクションを含むクラスの Clone() メソッドで、単純にメンバを右から左に代入するコードを書けば参照の複製でしょうし、何も書かなければ初期値のままです。

C++ の「代入」と違って、Clone() のオーバーライドは単なるメソッドのオーバーライドですから、「何が起きるか」は「どんなコードを書いたか」に依存します。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-06-21 13:15
引用:

引用:

その場合は、既定では単なるポインタの複製でいいんですよね?


コードを書けば参照の複製でしょうし、何も書かなければ初期値のままです。


あ、「既定」は何も書かなければのつもりでした。。。
何度もすいませんです。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-06-21 19:23
引用:

shimuraさんの書き込み(2006-06-21 10:01)より:

VB.NETでADOからADO.NETの書き換えを行っています。
(Framework1.1)

書籍やHPで参考になるサンプルソースを探しているのですが、
あるHPでコネクションをCTYPEでキャストして、
cloneメソッドでコピーをしている箇所を見つけました。


 こういう場合、一番良いのは、その HP の作者に直接聞くことです。
 作者が連絡先を公開していない場合は、聞くとき(つまりここに書き込むとき)に、そのページへのリンクを張ります。
 作った意図は、作った本人にしか分かりません。渋木宏明(ひどり)さんが「好意的に想像を膨らませると」という言葉を使われていることに注意してください。


 ところで、自分が何か情報を公開していると、想像してください。そして、自分への問い合わせ先も公開しています。
 ところが、誰かが、他のところで、「これって正しいのでしょうか」と、尋ねているところに出くわしたら、どんな気持ちがすると思いますか?
1

スキルアップ/キャリアアップ(JOB@IT)