C#でLINQを使ってデータベースに書き込みたい

このQ&Aのポイント
  • C#でデータベースにデータを書き込む方法を学ぶ
  • LINQを使用してC#でデータベースにデータを書き込む手順を解説
  • データベースのテーブルにidとhogeのデータを書き込むための具体的な方法を説明
回答を見る
  • ベストアンサー

C#で、LINQを使ってデータベースに書き込みたい

C#で、LINQを使ってデータベースに書き込みたい LINQに関して、全くの初心者なのでお手柔らかにお願いします。 データベースのテーブル "A" の中身は、 id (string型) hoge (string型) 以上の二つ。 このテーブルに対して、データを書き込むには using (var db = new DataContext()) { db.Log = Console.Out; var storSales =db.A.Select(st => new { st.id, st.hoge }); } このような感じではないかと思いましたが、全然、分かりません。 SQLの構文も分からないのも、起因していますか・・・。 id と hoge にデータを書き込むには どのようにしたらいいでしょうか。 また、参考になりそうなWebページや、お勧めの参考書も教えてください。 以上、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • _etnl
  • ベストアンサー率100% (4/4)
回答No.1

提示されたコードはデータの取得を行っているようですが、書き込みの方法ですよね? db.A.InsertOnSubmit(new A(){ id = "aaaa", hoge = "bbbb" }); db.SubmitChanges();

参考URL:
http://msdn.microsoft.com/ja-jp/library/bb386941.aspx
xcode_15
質問者

お礼

ありがとうございます。 何とか書けました。

関連するQ&A

  • LINQでn:nテーブルを階層オブジェクトに

    お世話になっております。 表題のテーマについて、理解いただける方にアドバイスお願いします。 会員を表すMembersというテーブル、 種別を表すTypesというテーブル、 会員と種別を結び付けるMemberTypeBindsというテーブルがあって、会員・種別がn対nで定義されています。 Membersの件数は200件ほど、Typeは20件程度。だいたいMembersは1~5くらいのTypeに紐づいています。 Table Members int ID(主キー, autoIncrement) varchar(20) MemberName Table Types int ID(主キー, autoIncrement) varchar(20) TypeName Table MemberTypeBinds int memberID(外部キー, MembersのID) int typeID(外部キー, TypesのID) これを、LINQで下記のクラスオブジェクトに抽出したいと思っています。 今は全件表示でもいいですが、そのうちページングで表示する必要がでてくると思います。 public class MemberTypes {  public Member member { get; set; }  public List<Type> types { get; set; } } どうやるかがわかりません。LINQはこんな感じだと思うのですが、 public List<MemberTypes> GetMemberTypes(){  using (var dc = new DataContext()){   var result = dc.MemTypeBinds    .GroupBy(mt=>mt.Member)    // このあと、どうやったらいいかがわかりません。    // DBから階層化オブジェクトを生成するのは    // けっこう頻出のテーマだと思うので、しっかりマスターしたいです。   }).ToList();   return result;  } } LINQに詳しい方、お助けください。

  • 複数のデータベースを使う場合

    php4 + MYSQL4.0.2で作業しています。 1つのサーバーにある、複数のデータベースに接続する方法を教えてください。 DB1:テーブルhoge(ID、name) DB2:テーブルhogehoge(ID, hogeID, comment) このような場合、データベースが全てDB1に入っているとすれば、 $con = mysql_connect(host, user, pass); sql="SELECT name, comment" . " FROM hogehoge INNER JOIN hoge ON hogehoge.hogeID = hoge.ID"; $rst = mysql_db_query(DB1, $sql, $con); $col = mysql_fetch_array($rst); print($col['name'] . $col['comment']); となりますが、 テーブルhogeとhogehogeが、異なるデータベースに存在する場合はどのようにすればよいのでしょうか? 以上、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 【C#】LINQについての質問です。

    【C#】LINQについての質問です。 今、プログラミングLINQ(日経BP)の本を読んでいるのですが、わからないところがありましたので、お分かりの方に教えていただきたいです。 問題の場所は、P87のリスト3-43で、以下のコードです。 わからないのは、このコードの中で、ラムダ式のtとsが何にを指しているのかということです。 お分かりになる方、よろしくお願いいたします。 var expr = from c in customers join o in (from c in customers from o in c.Orders join p in products on o.IdProduct equals p.IdProduct select new { c.Name, o.IdProduct, o.Month, OrderAmount = o.Quantity * p.Price }) on c.Name equals o.Name into orders select new { c.Name, MaxOrder = orders .Aggregate( new { Amount = 0m, Month = String.Empty }, (t, s) => t.Amount > s.OrderAmount ? t : new { Amount = s.OrderAmount, Month = s.Month }) };

  • C# LINQ 継承クラスに射影充填したい

    LINQ for SQLで、DBDataContextにて以下のクラスが自動宣言されています。 public class Job {   public ID { get; set; }   その他大量のフィールドプロパティ(100個くらい) } で、これを継承する以下のクラスがあります。 public class JobE : Job {   いくつかのプロパティ(100個くらい) } LINQ for SQLで、JobEインスタンスに充填したいです。 JobEで追加されたプロパティはすべて初期値でOKです。 using (var context = new DBDataContext()) {   var jobE = context.Jobs     .Where(j => j.xxx == yyy)     .Select(j => new JobE {       現状はここに延々とプロパティを書き連ねています。       (JobE側のプロパティ = Job側のプロパティ)     }); } あまりに馬鹿げていると思います。 もう少し賢い方法はないでしょうか?

  • データベース化について

    データベース化について お疲れ様です、データベース化について質問があります。 お客様にあることについてDB化について依頼を受けまして、 仕様はそちら側で決めてくれと言われました。 データベース化とは、ただ、テーブルにデータを入力するのが データベース化と言う事になるのでしょうか? 又、テーブルは場合によっては分けたほうが良いのでしょうか? よろしくお願いします。

  • 異なるデータベースからのコピーを教えてください

    異なるデータベースからのコピーを教えてください。 VBSにて下記のような作業を行いたいと思います。 例) A  データベース A1 テーブル --------------------------------- B  データベース B1 テーブル --------------------------------- 上記のようにAデータベースのA1テーブルから、BデータベースのB1のテーブルへ データをコピーする方法を教えてください。 参考となるキーワード等があれば教えてください。 

  • [PHP]ループ内の配列取得、表示について

    質問させていただきます。 データをDBから取得しwhileで全てのデータを配列として出力しているとします。 (whileの中で出力し、3つのデータがあるため3回ループされている) 結果 array(1) { [0]=> string(5) "17:10" } array(2) { [0]=> string(5) "17:10" [1]=> string(5) "17:25" } array(3) { [0]=> string(5) "17:10" [1]=> string(5) "17:25" [2]=> string(5) "11:15" } 現在の出力内容は、 var_dump[$hoge[0]] 出力結果 string(5) "17:10" string(5) "17:10" string(5) "17:10" var_dump[$hoge[1]] 出力結果 NULL string(5) "17:25" string(5) "17:25" var_dump[$hoge[2]] 出力結果 NULL NULL string(5) "11:15" という出力になっていますが、最後のarray(3)の部分だけを抜き出したいです。 その場合はどのようにすればよいのでしょうか? -理想の結果- 利用したいのはarray(3)の部分だけ。 var_dump[$hoge[0]] "17:10" var_dump[$hoge[1]] "17:25" var_dump[$hoge[2]] "11:15" 説明不足かもしれませんが、よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • C# Linq To XML について

    C#をつかって、XMLファイルを読み出し、値を検索しようとしていますが、ほしい情報をとることができません。もしわかる方がいましたら、ご回答よろしくおねがいします。 XMLは下記の形式で、このtableが4つ続いてあります。 <table> <row> <column name="Tests">Tests Textvalues</column> </row> <row> <column name="A">Id</column> <column name="B">Description</column> <column name="C">Value</column> </row> <row> <column name="A">1</column> <column name="B">no</column> <column name="C">34 25 E0</column> </row> <row> <column name="A">2</column> <column name="B">yes</column> <column name="C">34 25 E1</column> </row> </table> <table>.....つづく 下記のようなコードを書きました。 XElement xelement = XElement.Load(ファイルパス); IEnumerable<XElement> tables = xelement.Elements(); foreach (XElement table in tables) { var name = from nm in table.Elements("row") where (string)nm.Element("colmun").Attribute("B")== "no"              select nm; foreach (var a in name) { Console.WriteLine(a); } } 残念ながら、このコードでは、nameの中身がからっぽです。 目的は、Bの値からCの値を検索することです。 以上、よろしくお願いします。

  • データベースを複数作ったほうが良いでしょうか?

    Win+Apache+PHP+MySQLで、自宅サーバを立てています。 データベース名:DB_A  テーブル:Table_A データベース名:DB_B  テーブル:Table_B とするべきか、 データベース名:DB_A  テーブル:Table_A,Table_B とするべきか悩んでいます。 データベースについてあまり理解していないのですが、データベースを分けると何がどう変わるのでしょうか? (分けたほうが、高速化するのでしょうか?利点など教えていただければありがたいです。)

  • C#の配列について

    string[] hoge = { "0-9", "a-z", "あ-ん" }; for (int i = 0; i < hoge.Length; i++) Console.WriteLine(hoge[i]); 出力 0123456789abcde...xyzあいうえお...わおん このように配列を宣言することはできませんか? 1文字ずつ string[] hoge = { "0", "1", ..."a", "b" ..."あ", "い", ... }}; と書くのはソースが汚くなってしまう気がして…