• 締切済み

C#でのデータセットを使用したDBアクセス

はじめまして。 データセットを使用したDBアクセスの実装では SqlDataAdapter da = new SqlDataAdapter(strsql,stConnectionString); DataSet ds = new DataSet();  …(1) da.Fill(ds);              …(2) としますが(1)と(2)を合わせて DataSet ds = da.Fill(); とはできません。 インスタンス作成の際はオブジェクトによっては「=」でつないで作成するのがあると 思いますが、データセット使用の際にはできないのは、使用するオブジェクトによって 定義の記述が違うという認識を持っておけば良いのでしょうか? 「=」を使用せず、da.Fill(ds)で記述することに違和感があります。 よろしくお願いします。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1622/5658)
回答No.1

何をどうしたら(1)と(2)を合わせると >DataSet ds = da.Fill(); になるという事を思われたのでしょうか。 どうやっても da.Fill(new DataSet()); にしかなりません。 SqlDataAdapterのFillメソッドはDataSetのインスタンスを生成するメソッドではありませんし。 ライブラリリファレンス読まれてますか? >インスタンス作成の際はオブジェクトによっては「=」でつないで作成するのがあると >思いますが、データセット使用の際にはできないのは、使用するオブジェクトによって >定義の記述が違うという認識を持っておけば良いのでしょうか? インスタンスの生成に=演算子は関係ありませんが・・・ そもそもの認識が間違ってそうに見受けられますけど。

eiki0520
質問者

お礼

お世話になります。 ライブラリの確認不足申し訳ないです。 Fillメソッドをライブラリで見るとデータセットの追加・更新の行数を返り値とするとあります。 また引数はDataSetと記述があります。 da.fill(ds)を実行することで、返り値として行数は返しますが引数にしているdsが メソッド実行することで、どういうふうになるのかイメージしづらかったので このような質問をさせてもらいました。 もう少し自分で考えてみます。

関連するQ&A

  • SQL serverデータ取得

    public static DataSet GetCustomers() { string sql = @"SELECT * FROM M_CHARGE"; SqlConnection conn = new SqlConnection(DBConfiguration.DbConnectionString); SqlDataAdapter da = new SqlDataAdapter(sql, DBConfiguration.DbConnectionString); da.SelectCommand = new SqlCommand(sql, conn); DataSet ds = new DataSet(); ds.Tables.Add("M_CHARGE"); da.Fill(ds, "M_CHARGE"); return ds; } da.Fill(ds, "M_CHARGE");の部分でインスタンスエラーになります。どうしてでしょうか? 誰か教えて下さいお願いします(TдT)

  • C# vs2005 sqlserver2005 USERID列重複禁止 windows appli

    こんばんは。 標記の件で勉強しています。 string userid = textBox1.Text; に値を入力しボタンするとDBにinsertして、その際に同じUserID(DB上の)をinsertできないようにしたいのですが、下記ソースでうまくいきません。 下記はDBのUserIDをforeachでグルグル回して、そこにtextBox1に入力した 値と同じであれば、処理を中断したいのですが、まず、「colは繰り返し変数であるため割り当てることができません」と怒られます。 しかもぐるぐる回ると思われた、foreachが1回しか回らずに内容はDBの 列名である「UserID」が代入されてしまいます。 下記ソースは重複チェックの部分のみです。 SqlDataAdapter da = new SqlDataAdapter("SELECT UserID FROM user_master", cnc); // データをキャッシュする DataSet のインスタンスを作成する DataSet ds = new DataSet(); // データセットにデータを読み込む da.Fill(ds, "user_master"); foreach (DataColumn col in ds.Tables["user_master"].Columns) { col = userid; } 以上宜しくお願いします。

  • [ASP.NET]DropDownListのDB連携のやり方。

    こんにちわ。 VS.NET2003で、ASP.NET+C#で開発しております。 ちょっと悩んでしまったので、質問させてください。 とある入力フォームを作成しようと思っているのですが、そのフォームにDBと連携したDropDownListを複数配置させたいと考えております。 で、とりあえず1つ連携させてみたのですが、これを複数やるのってなんだかなぁ。っと思ってしまいました。 連携の方法としては、 (1)sqlDataAdapterを作成、クエリを作る。 (2)sqlDataAdapterからdataSetオブジェクトを作成する。 (3)Page_LoadメソッドにてsqlDataAdapter.Fill(dataSetオブジェクト)を実行し、DataBindする なんですが、これDropDownListの数だけsqlDataAdapter作らなくちゃいけないんですかねぇ?途中で端折れるところや、使いまわし出来る部分がありましたら、どなたか教えてください。 よろしくお願いします。

  • .net 複数の主キーを設定する方法

    VB2005、SQLServer2005環境です。 主キーの設定方法について教えて下さい。 主キーが一つの場合下記のように記述しますが、複数ある場合はどう記述すればよろしいですか? お願いします。 strsql = "SELECT * FROM Aテーブル" Dim comm As SqlCommand = New SqlCommand(strsql, Con) Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) Dim ds As DataSet = New DataSet() dataadapter.Fill(ds, "Aテーブル") Dim dt As New DataTable dt = ds.Tables("Aテーブル") '主キーの設定 dt.PrimaryKey = New DataColumn() {dt.Columns("コード1")}

  • データセットの違いにつきまして

    VB(2003)でADOアクセスのプログラムを作成しています。 データセットにつきまして、質問したき件ありまして 書き込みました。 私には、VBにデータセットが2種類あるように思われるのですが、 質問を以下に記述させていただきます。 質問が少し変かもしれませんが、どなたかアドバイス いただけるとありがたいです。 (1)ひとつめのデータセット DBのアクセスとかで下記の定義で定義して使う データセット Dim ds As New DataSet と (2)ふたつめのデータセット ソリューションエクスプローラの 追加ー>新規項目の追加で選択した[データセット] で追加されるデータセット dataset1.xsd が ありますが、この2つの関係はどのように捕らえたら よいのでしょうか? 質問がおかしいかもしれませんが、どなたか教えて いただけるとありがたいです。 ちなみに、私が作成したDBのアクセスのプログラムは (2)を使用しています。((1)は使用していないです)

  • DataSet ds = new DataSet();

    DataSet ds = new DataSet(); System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(); da.SelectCommand = cmd; da.Fill(ds); でデータを格納したときに、 重複データを省きたいのですが可能でしょうか? DataReader ならひとつひとつ格納していくので、 重複データを省くことができるのですが。

  • DataGridViewの再表示方法

    VB2005、SQLServer2005環境です。 FormA、FormBの2つのフォームがあり、FormAはDataGridViewでデータを表示し、 FormBはFormAで選択されたデータを呼び出し修正処理を行っています。 質問は、FormBでデータを登録し、FormBを閉じたタイミングで、 FormAのDataGridViewを再描画して最新のデータを表示したいのですが、うまくいきません。 <FormAで記述しているCD> Private Sub BTN_Data表示ボタン_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BTN_Data表示ボタン.Click Dim strsql As String ' レコードを取得し、データグリッドに表示する '---DB接続 '---SQL文を作成して実行する strsql = "SELECT コード, 氏名 FROM TBLA ORDER BY コード Dim comm As SqlCommand = New SqlCommand(strsql, Con) '---データアダプタを生成 Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey '---データセット Dim ds As DataSet = New DataSet() dataadapter.Fill(ds, "TBLA") '---DataSet を DataGridView control と連結 dgrSyain.DataSource = ds dgrSyain.DataMember = "TBLA" '---DB切断 Call Disconnect() End Sub <FormBで記述しているCD> Private Sub BTN_更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_更新.Click '---FormBの内容を更新する処理----- Me.Close() End Sub 上記の、FormBが閉じる時のイベントで、ResetBindingsを使えばいいのかと思いましたが どこにどう記述すればよいかわかりませんでした。 どうすれば再描画できるでしょうか? ご教授ください。

  • ASP.NET DataGridのハイパーリンク

    以下のようにASP.NETにて、DataGridへデータをセットし表示したのですが、さらにヘッダーの項目名(名前、年齢)をハイパーリンクにし、クリックして別の詳細ページへ飛ぶなどの動作をさせたいと考えています。 いろいろ調べましたが、記述方法がわかりません。 どなたかアドバイスお願いします。 ---------------------------------------------------- Private Sub Page_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) ' DataGridへバインドする If Not Me.IsPostBack Then ' 独自のDataAdapterを作成する Dim da As New SqlDataAdapter( _ "SELECT fullname as 名前, age as 年齢 FROM person", _ Me.SqlConnection1) Dim ds As New DataSet ' データ検索 da.Fill(ds) ' DataGridへバインド Me.DataView1 = New DataView(ds.Tables(0)) Me.DataBind() End If End Sub

  • XMLからデータセットへ

    こんにちは 初めての質問です。 今XML形の文字列があります。 string strXML = @" <dataset1> <table1> <column1>a</column1> <column1>b</column1> <column1>c</column1> <column1>d</column1> <column1>e</column1> <column1>f</column1> </table1> </dataset1>"; この文字列をXMLファイルとして保存します。 XmlDocument xml = new XmlDocument(); xml.LoadXml(strXML); xml.Save(@"C:\test.xml"); 保存したXMLファイルをデータセットで読み込みます。 DataSet ds = new DataSet(); ds.ReadXml(@"C:\test.xml"); 以上の流れでデータセットの作成はできますが、 一回XMLファイルを保存しないといけません。 何とか保存しないで、文字列から直接データセットを生成する方法はありますか? よろしくお願いします。

    • ベストアンサー
    • XML
  • データベースから情報の取得・更新・削除 SQL2005 C# 2

    おはようございます。カネゴです。 表記の件で再度質問させていただきいます。 まずは情報取得。 これは、検索・抽出といったほうがいいのでしょうか。ID PASSを テキストボックスに入力し検索ボタンを押下すると、データベースから 検索結果に、マッチしたレコードがデータグリッドに表示されると いうものです。 sqlconnection sqlcomand. などを使用し sqldataadaptedのfill メソッドで表示させればいいのでしょが、なかなかうまくいきません… 更新削除も同様に、ado.netで行いたいのですが、なかなかうまくいきません。 「検索」btn押下後のイベントです。 SqlConnection cn = new SqlConnection(@" server = ***\SQL2005 ; " + " database = user_master ; " + " uid = sa ; " + " pwd = *** ; "); cn.Open(); SqlCommand cmd = new SqlCommand("SELECT * FROM user_master where UserID=textBox1.Text and Password=textBox2.Tet ", cn); SqlDataAdapter da = new SqlDataAdapter (); da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(ds, "user_master"); cn.Close(); たぶん、select文のなかが違うと思います。 マルチパート識別子 "textBox1.Text" をバインドできませんでした。 マルチパート識別子 "textBox2.Text" をバインドできませんでした。 とエラーがでます。 素人なので、つぎはぎして作ったので、文法的なものがめちゃくちゃかもしれませんが 以上宜しくお願いします。

専門家に質問してみよう