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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.63657 の関連記事表示

<< 0 >>
■63657  クエリーではなく直接項目に代入する方法はあるでしょうか?
□投稿者/ ロック -(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のような方法があり、やり方等載っているサイトがあると教えて頂ければ助かります。
親記事 /過去ログ107より / 関連記事表示
削除チェック/

■63659  Re[1]: クエリーではなく直接項目に代入する方法はあるでしょうか?
□投稿者/ shu -(2012/09/23(Sun) 21:58:48)
    No63657 (ロック さん) に返信

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

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

    Insertだけということであれば構造取得した後、DataTableに行を追加して
    SqlBulkCopyを使用した方が効率が良いです。
記事No.63657 のレス /過去ログ107より / 関連記事表示
削除チェック/

■63665  Re[2]: クエリーではなく直接項目に代入する方法はあるでしょうか?
□投稿者/ ロック -(2012/09/24(Mon) 13:03:21)
記事No.63657 のレス / END /過去ログ107より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -