ADO.NETの質問・雑談スレ2 (421レス)
上下前次1-新
21: 2009/02/20(金)19:40 ID:??? AAS
自動生成は使ったことないな
SQL Server2008だけどManagementStudioでクエリ手書きで書いて
パラメータ化してDataadapterかDatareaderにいれるケースが多い
伝票の登録とかもsqlcommandでパラメタ化した素のinsert文とか
排他制御はtimestamp使って楽観的ロックを自前で
複雑な処理はストアドにして結果をselectで返すようにして
DatasetにFillして処理
Access使ってた時はGUIのクエリデザイナで書いてたけど
慣れたら手書きのほうがやりやすいな
22(1): [age] 2009/02/20(金)20:06 ID:??? AAS
ADO.NETは、SQLの自動生成機能を強化するかと思ってたが、そうでは無いみたい。
SQLは自分で書くスタイルを維持してて、それ以外の部分をウィザードやGUIで操作
出来るようにするモットーのようだ。(俺はウィザードやGUIはほとんど使わないけれどw)
今後は、SQLコードを書く際の支援(LINQ)をする方向に持っていくと見るといいのかな。
23(1): 2009/02/20(金)20:12 ID:p5QGPAc4(1) AAS
>>22
LINQ使ったことないけど、見ただけだと、O/Rマッパーっぽい感じがしてるんだけど
#違うか
24: 2009/02/20(金)20:14 ID:??? AAS
なるほど
自動生成スゲー!ADO.NETスゲー!って思って手を出してみたんですが、
なんとなく扱いづらい気がして結局手で書いてる自分がいて「コレでいいのか?」と疑問に。
なかなかうまくいかないなあ。
意外に人がいてびっくり。
25: [age] 2009/02/20(金)20:18 ID:??? AAS
>>23
LINQのモットーはこれじゃないの?
今までは、操作するデータが異なると、その処理を行うコードもそれにあわせて
書く必要があった。(例えば、配列の全データにアクセスするコードと、
DBからテーブルを読み込んで全データにアクセスするコードは異なる。)
そこが面倒なので、処理を行うコードを統一化しよう、という考え。
26(2): 2009/02/20(金)20:37 ID:??? AAS
linq to sql はそこそこ便利だったぞw
27: [age] 2009/02/20(金)21:50 ID:??? AAS
>>26
便利かもしれないが、しばらくの間は、規格が変わったりしそうに思う。
なので俺は ADO.NET を使うように考えてるな。
28: [age] 2009/02/20(金)22:34 ID:??? AAS
>>26
ADO.NET と関係しそうなところを中心にレビューよろw
29(3): 2009/02/21(土)15:07 ID:??? AAS
C#2008(.NET3.5)+Access(mdb)でADO.NETを勉強し始めたんだけど、usingのネストになってしまった。
ADOやらoo4oやらは弄ったことあるんだけどこれは・・・考え方がそもそも間違ってる?
//testtableから指定testidのレコードを持ってくる
using (OleDbConnection cnn = new OleDbConnection(connectionstring))
{
string selectsql = "select * from testtable where testid = @testid ";
using (OleDbCommand selectcmd = new OleDbCommand(selectsql, cnn))
{
selectcmd.Parameters.Add(new OleDbParameter("@testid", "1"));
省8
30: 2009/02/21(土)17:47 ID:??? AAS
>>29
Adapterと一緒にCommandもConnectionも生成して、
Adapterだけ解放すれば、Adapterと一緒に生成したObjectも解放される…のが理想なんだが
現実はそうならない。そのへんは色々問題があってなー
例)
DataSet ds = new DataSet();
using (SqlDataAdapter adp = new SqlDataAdapter("SELECT * FROM hoge", new SqlConnection(ConnectionString)))
{
adp.Fill(ds);
}
省3
31: 2009/02/21(土)23:16 ID:??? AAS
>>29
Connectionのusingだけで十分だ。
CommandやDataAdapterのインスタンスがDisposeされるまでに
時間がかかるが、そんなもん放っておけば良い。
重要なアンマネージリソースはConnectionにしかない。
32: 29です 2009/02/21(土)23:50 ID:??? AAS
Dispose基準は重要なリソースか・・・目からウンコがおちたようだ。
せっかくのGCを無駄にするところだったかな。
URLありがとう、じっくり読んでみます。
33(4): 2009/02/23(月)03:34 ID:kcpJjeEI(1) AAS
accessのMDBファイルに、以下のように接続してSQLを発行してます。
using (OleDbConnection cn = new OleDbConnection(m_connectString))
{
try
{
cn.Open();
OleDbCommand com = new System.Data.OleDb.OleDbCommand("SELECT name FROM Aテーブル ORDER BY sort;", cn);
OleDbDataReader reader = com.ExecuteReader();
(データを取得する処理 省略)
}
省17
34: 2009/02/23(月)09:58 ID:wqMGnrpl(1) AAS
>>(データを取得する処理 省略)
while で回してる?
35: 2009/02/23(月)20:30 ID:??? AAS
hasrowでチェックするとかしたら?
36(1): 2009/02/23(月)21:18 ID:??? AAS
クエリの中のどっかがプレースホルダとして認識されてんだろjk
テーブル名と列名全部ブラケットで括ってみ。
//CurrentRecordが無いところでFieldを参照しようとした場合はInvalidOperationExceptionになる。
//OleDbExectionにはならん。
37: 2009/02/23(月)21:31 ID:??? AAS
//同じコードで>>33試してみたが再現せんな…
38: 2009/02/23(月)22:10 ID:??? AAS
>com.ExecuteReader()で
catchで捕まえたからではなく、ステップ実行してそこで例外発生したって認識でOK?
フィールド名のtypoだったらレコードの有無に関わらず発生しそうなものだけど・・・。
同じく試してみたけど再現しないですね。
39: 2009/02/23(月)22:20 ID:??? AAS
if ( !com.Read() )
{
// データないときの処理
}
:
…なんてやってるわけないよね。
40(1): 2009/02/24(火)08:55 ID:??? AAS
まさかとは思うが、レコードがないってのは
テーブルは存在してるんだよな?
上下前次1-新書関写板覧索設栞歴
あと 381 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.006s