C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: クエリーではなく直接項目に代入する方法はあるでしょうか?


(過去ログ 107 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■63657 / inTopicNo.1)  クエリーではなく直接項目に代入する方法はあるでしょうか?
  
□投稿者/ ロック (1回)-(2012/09/23(Sun) 15:25:41)

分類:[C#] 

Windows 7 SP1
Visual Studio 2010 C# Pro
SQL Server 2008 Express

データベースのテーブルにレコードを挿入する時、本やネットで調べてクエリーを使う方法が紹介されているので使ってます。
今、ソースや本がないので間違い等あると思いますがご了承を。

INSERT INTO table (aaa, bbb, ccc, ddd, eee)
VALUES (111,'222','333','444','555')

もちろんちゃんと動いてますが、項目が100個とかのテーブルだと項目名と値の順番が正しいのか等とても見づらくなります。

Delphiだと、フォームにテーブル部品を置いて、何のテーブルを指してるかプロパティで指定し、

table.Append;
table.FieldByName('aaa').AsInteger := 111;
table.FieldByName('bbb').AsString := '222';
table.FieldByName('ccc').AsString := '333';
table.FieldByName('ddd').AsString := '444';
table.FieldByName('eee').AsString := '555';
table.Post;

としてクエリーではなく、こういう方法が一般的でした。
これだと項目名と値の順番が間違えることはありません。
C#でこういう方法は無理なのでしょうか?
部品にはDataSetというのがあるので、これをフォームに置いて使うのかとネットで調べても情報見つかりませんでした。
本にDataTableを自分でnewしてする方法が載ってるんですが、項目のひとつひとつの型をまず全部定義してから代入する方法でした。
これだと結局DBMSで定義したのに、C#上でまた全ての項目の型を定義する必要があり、あまり意味がありません。

データベース接続を追加する方法は買った本にも載っています。
こんな感じです。
http://msdn.microsoft.com/ja-jp/library/bb655884(v=vs.90).aspx
ただ本にも追加する方法は載ってますが、そこから挿入や編集はなぜかクエリー使った方法しか載ってません。
このデータベース接続追加でいけそうな気もするんですが、本にも載ってないのはやはり無理なのでしょうか?
確かそれをデータグリッドに表示するのは過去うまく実現できたと思いますが、プログラムから挿入や編集するクエリー以外の方法は分かりませんでした。

C#にはDelphiのような方法はないのでしょうか?
ネットでこの休みにいろいろ検索しましたが結局見つからずクエリー使う方法ばかりでした。
もしもDelphiのような方法があり、やり方等載っているサイトがあると教えて頂ければ助かります。
引用返信 編集キー/
■63659 / inTopicNo.2)  Re[1]: クエリーではなく直接項目に代入する方法はあるでしょうか?
□投稿者/ shu (75回)-(2012/09/23(Sun) 21:58:48)
No63657 (ロック さん) に返信

SqlDataAdapterにより
FillSchemaかFillで最初にDBからテーブル構造を取得。データも取得するならFillの方
渡すときにはnewしただけのDatasetまたはDataTableを使えば大丈夫です。

実行後渡したDatasetやDataTableにはテーブル構造が作成されているので
あとはDataRowを取得して追加、更新、削除をして
取得時に使用したSqlDataAdapterのUpdateメソッドに渡せば良いです。

Insertだけということであれば構造取得した後、DataTableに行を追加して
SqlBulkCopyを使用した方が効率が良いです。
引用返信 編集キー/
■63665 / inTopicNo.3)  Re[2]: クエリーではなく直接項目に代入する方法はあるでしょうか?
□投稿者/ ロック (2回)-(2012/09/24(Mon) 13:03:21)
shuさん、初めまして!

教えてもらった情報を元にネット検索して下記のページがまさにその方法を説明してくれてそうです。

http://www.atmarkit.co.jp/fdotnet/basics/adonet04/adonet04_01.html
http://www.atmarkit.co.jp/fdotnet/basics/adonet05/adonet05_01.html
http://www.atmarkit.co.jp/fdotnet/basics/adonet06/adonet06_01.html

詳しく読んで実際にC#で試したいと思います。
情報ありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -