• 締切済み

データベースから情報の取得・更新・削除 SQL2005 C#

こんにちは。カネゴです。 標記の件で調べています。 マスタ管理画面を作成しているのですが、「ID・PASS」を入力後、検索ボタン押下し、条件に合致したデータをデータベースから情報を取得して表示させたいのですが、うまくいきません。 ちなみに、更新削除の処理も含めたいです。 というよりも、接続文字列・dataset datagrid sqlconnction sqlcommand datareader dataadapter などいろいろありますが、いまいち使い方が理解していません。 ちなみに言語はC#でやっております。 「初心者」でも参考になり分かりやすい本やサイトなどありましたら、紹介してください(__)@itなど参考にしているのですが、そのado.net編でも理解に苦しむレベルです。 以上よろしくお願いします(__)

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

下記URLの『ADO.NET と Visual Studio 2005 によるデータ アクセス入門』などを参照してみてください リンクが VBだけになっていますがウィザードによる設定なのでほとんど同じ操作になると思います あとは VS.NET付属のMSDNのサンプルなどを漁ってみましょう

参考URL:
http://www.microsoft.com/japan/msdn/thisweek/300x10/
t_kanegon
質問者

お礼

参考URLありがとうございました。 大変参考になりました。 まだ、勉強を始めたばかりなので今後ともよろしくお願いします。(__)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

C#といっても 2002/2003/2005/2008とバージョンが存在します 開発できるアプリケーションも WindowsFormやWEBFormなど複数の環境があります 基本的には Connectionでデータベースとの接続を確保 Commandに 選択用のSELECT、更新用UPDATE、追加用のINSERT、削除用のDELETEなどを設定 Adapterの SelectCommand,UpdateCommandなどを先のCommandオブジェクトを設定 AdapterのFillメソッドで データベースからのデータを DataSetに読み込み 表示用の DataGridなどコントロールのDataSourceやDataMemberにDataSetやDataTableなどを設定 コントロールのDataBindで実際にデータをコントロールに接続 といった流れでしょう 2005/2008の場合 DataBindingSourceなどを適切設定すると ほとんどコードを書かずに コントロールへデータを流し込むことが可能です

t_kanegon
質問者

補足

redfox63さんありがとうございます。 vs2005のWindowsFormでやっております。上記内容は理解できるのですが、具体例など参考になるものはありませんでしょうか。 >2005/2008の場合 DataBindingSourceなどを適切設定すると ほとんどコード >を書かずに コントロールへデータを流し込むことが可能です これは知りませんでしたが、出来たらコーディングを勉強したいので、参考になるサイトなどありましたら、お願いします。

関連するQ&A

  • データベースから情報の取得・更新・削除 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" をバインドできませんでした。 とエラーがでます。 素人なので、つぎはぎして作ったので、文法的なものがめちゃくちゃかもしれませんが 以上宜しくお願いします。

  • VB DB更新時にパラメーターへ値のセット

    データベースの更新についてご指導下さい。 VB2010からSQLサーバーのデータベースに接続しております。 dataAdapter.Updateによりデータベースを更新する際の パラメーターへ値をセットする方法を教えて下さい。 テーブル名Test Code Name ------------ A   Suzuki 希望する処理 テキストボックスに入力された名前に変更 例) Suzuki → Yamada ○フォームの変数として定義 Dim dataAdapter As New SqlDataAdapter Dim dataSet As New DataSet ○FormLoad時にSelectCommandとUpdateCommandを設定 Dim SQL As String = "" Dim command As SqlCommand Dim connection As SqlConnection = New SqlConnection(~) SQL = "SELECT * FROM Test WHERE Code = @code " command = New SqlCommand(SQL, connection) dataAdapter.SelectCommand = command dataAdapter.SelectCommand.Parameters.Add("@code", SqlDbType.Char) SQL = "UPDATE Test SET Name = @name WHERE Code = @code" command = New SqlCommand(SQL, connection) dataAdapter.UpdateCommand = command dataAdapter.UpdateCommand.Parameters.Add("@code", SqlDbType.Char) dataAdapter.UpdateCommand.Parameters.Add("@name", SqlDbType.Text, 50) ○データ表示時にはこれで表示されました。 dataAdapter.SelectCommand.Parameters.Item("@code").Value = ComboBoxCode.text dataAdapter.Fill(dataSet) ○このSelectCommandを参考にこのように書いて見たのですが更新されません。 dataAdapter.UpdateCommand.Parameters.Item("@code").Value = ComboBoxCode.Text dataAdapter.UpdateCommand.Parameters.Item("@name").Value = TextBoxName.Text dataAdapter.Update(dataSet) どのようにしたら実行時にパラメーター化したところへデータをセットできるのでしょうか? データセットに値が入っていないのでは?と予想したのですが…。

  • .net データベースへ反映する方法

    <環境> 言語:Microsoft Visual Studio 2008 データベース:SQL Server 2005 非接続型のデータアクセスです。 以前同じ質問をさせていただいたのですが、解決できなかったため、再度投稿させていただきました。 <質問> DataGridViewにデータを表示し、登録、修正、削除を行った後、 更新ボタンを押下でDataGridViewの内容をデータベース(SQLServer)に反映したいのですが、エラーとなり反映できません。 http://japan.internet.com/developer/20070522/26.html を参考にしているのですが、四苦八苦。全然前に進めない状態です。 自作したコードを下記の通りです。いったいどこを直せばよろしいでしょうか?どなたかアドバイスよろしくお願いします。 <エラー>---------------------------------------------------------- "System.ArgumentNullException: 値を Null にすることはできません。  パラメータ名: dataTable  場所 System.Data.Common.DbDataAdapter.Update(DataTable dataTable) -------------------------------------------------------------------- Private Sub frmDataGridViewTest_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load   Dim strsql As String   Call DBConnect() 'DB接続   strsql = "SELECT ID, 名称, 型式 FROM ATBL ORDER BY ID"   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, "テーブル")   dgrview.DataSource = ds   dgrview.DataMember = "テーブル"   Call Disconnect() 'DB切断 End Sub Private Sub BTN_更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_更新.Click   Dim strsql As String   Call DBConnect() 'DB接続   strsql = "SELECT ID, 名称, 型式 FROM ATBL ORDER BY ID"   Dim comm As SqlCommand = New SqlCommand(strsql, Con)   Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)   dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey   dataadapter.Fill(ds, "テーブル")   Dim dt As DataTable = ds.Tables("テーブル")   '<<<DataGridViewコントロールでの変更をデータベースに戻す>>>   Dim sqlCmdBuilder As New SqlCommandBuilder(dataadapter)   sqlCmdBuilder.GetUpdateCommand()   dataadapter.Update(ds.Tables("テーブル"))   Call Disconnect() 'DB切断 End Sub

  • DataGridViewで編集した内容をデータベースに反映したい

    言語:Microsoft Visual Studio 2008 データベース:SQL Server 2005 非接続型のデータアクセスです。 現在,上記環境で.netを勉強し始めたところです。 そこで簡単なプログラムからと思いDataGridViewを学習し始めたのですがすぐにつまずいてしまいました。 色々調べたのですが思うようにいかないので,アドバイスをいただければと思います。 やりたいことは (1)フォーム1のDataGridViewコントロールにデータソースをバインドしてデータを表示する。 (2)フォーム1の更新ボタン押下時に、DataGridViewで編集した内容をデータベースに反映する。 つまづいているのは(2)です。 http://japan.internet.com/developer/20070522/26.html を参考にしたのですが、どうコーディングすればよいかわかりません。 自作したコードは下記の通りです。 Private Sub frmDataGridViewTest_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load   Dim strsql As String   Call DBConnect() '---DB接続   strsql = "SELECT ID, 名称, 型式 FROM テーブル ORDER BY ID"   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, "テーブル")   dgrview.DataSource = ds   dgrview.DataMember = "テーブル"   Call Disconnect() '---DB切断 End Sub Private Sub BTN_更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_更新.Click   '---ここに何か必要なのでしょうか?????     このままだとdataadapterとdsに宣言がないとエラーになります。   '---DataGridViewコントロールでの変更をデータベースに戻す   Dim sqlCmdBuilder As New SqlCommandBuilder(dataadapter)   sqlCmdBuilder.GetUpdateCommand()   dataadapter.Update(ds.Tables("テーブル"))   Call Disconnect() '---DB切断 End Sub

  • データベースから情報の取得・更新・削除 visual studio2005 sqlserver2005 c# (3)

    こんにちは、カネゴンです。 標記の件で再度質問させていただきます。 データグリッドへの新レコードの追加です。 下記ソースで、まず「daをfillできません」となります。 パラメータあたりがおかしいのはわかっていますが、どのように直したらいいのやらわかりません。 次にこのページは、登録画面をnewして、別画面で表示しているのですが もちろんデータグリッドは別ページにあるため、「datagird1がありません」となります。 皆さんのお力をおかしください(__) 以上よろしくお願いします。 string StrConn = @" server = ***\SQL2005 ; " + " database =ser_master ; " + " uid = sa ; " + " pwd = *** ; "; SqlConnection cnc = new SqlConnection(StrConn); cnc.Open(); SqlCommand cmd = new SqlCommand("INSERT INTO [user_master]" + " ( UserID ,UserName , Password , Age , Salary , Sex ) VALUES " + " ( @userid , @username, @password, @age, @salary, @sex ", cnc); cmd.Parameters.AddWithValue("@userid", SqlDbType.VarChar); cmd.Parameters.AddWithValue("@username", SqlDbType.VarChar); cmd.Parameters.AddWithValue("@password", SqlDbType.VarChar); cmd.Parameters.AddWithValue("@age", SqlDbType.Int); cmd.Parameters.AddWithValue("@salary", SqlDbType.Int); cmd.Parameters.AddWithValue("@sex", SqlDbType.VarChar); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(ds, "user_master"); cnc.Close(); dataGridView1.DataSource = ds.Tables["user_master"];  

  • DataGridViewの列にコンボボックスを表示する方法

    言語:VB2005 データベース:SQLServer 非接続型のデータアクセスです。 .net勉強中の初心者です。件名の件について悩んでいますのでご教授お願いします。 http://dobon.net/vb/dotnet/datagridview/datagridviewcomboboxcolumn.html 上記HPを参考に勉強しています。 DataGridViewComboBoxColumnを使用する方法ではうまく表示できましたが、 DataSourceプロパティを使用する方法ではうまくできません。 (1)の処理を行うとまず、ID 所属コード 所属名称 がDataGridViewにバインドされます。 そこに(2)の処理を行い 所属名称を コンボボックスに変更したいのですが、所属名称の後に 列名が空白のコンボボックスが新たに追加作成されてしまいます。 そして下記のエラーが発生します。 System.FormatException: DataGridViewComboBoxCell の値が有効ではありません この既定のダイアログを置き換えるには、DataError イベントをハンドルしてください。 いったい何がおかしいのか???です。よろしくお願いします。 '**************************************** '(1)DataGridViewにデータをバインドする '**************************************** strsql = "SELECT ID, 所属コード, t1.名称 as 所属名称 FROM ATBL LEFT OUTER JOIN BTBL ON ATBL.所属 = BTBL.コード ORDER BY ID" 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, "テーブル") dgrview.DataSource = ds dgrview.DataMember = "テーブル" '---------------------------------------------------------------------- '(2)DataGridViewにComboBoxを設定する(DataSourceプロパティを使用した例) '---------------------------------------------------------------------- Dim DataSource As New DataTable("DataSource") DataSource.Columns.Add("Value", GetType(String)) DataSource.Columns.Add("code", GetType(Integer)) DataSource.Rows.Add("", 0) DataSource.Rows.Add("小学校", 1) DataSource.Rows.Add("中学校", 2) DataSource.Rows.Add("高校", 3) Dim column As New DataGridViewComboBoxColumn() column.DataPropertyName = "所属名称" column.DataSource = DataSource column.ValueMember = "code" column.DisplayMember = "Value" dgrview.Columns.Add(column)

  • accessのVBAの記述についていくつか質問です。

    質問が複数あるため、箇条書きにいたします。(質問の仕方がまちがってたらごめんなさい)どれも基本的な質問で申し訳ありません。 (1)エラートラップはすべてにつけたほうがいいのでしょうか?  極端に言えば、フォームを開くだけの時にもつけるものなのですか?  みなさんはどのような基準でつけているのでしょうか。 (2)FUNCTIONプロシージャは「結果を返す」時に使うものとありますが  いまいち意味がわかりません。SUBプロシージャでもできるのでは  ないでしょうか?どのようなときに役立つものなのでしょうか? (3)ADO,DOAもマスターしたいと思っているのですが、参考書を見ても  いまいち理解ができません(T T) なにかいい勉強方法、コツ、よい参考書があったら教えてください。

  • データベース内の情報が削除できない

    DataGrid上にボタンを配置してDeleteCommandの実装を試みているのですが、上手くいきません。 ========================= Private Sub DataGrid1_DeleteCommand(ByVal _ source As Object, ByVal e As _ System.Web.UI.WebControls. _ DataGridCommandEventArgs) Handles _ DataGrid1.DeleteCommand Dim PAS As String Dim PIG As Label PIG = CType(e.Item.FindControl("Label1"), Label) If (Not PIG Is Nothing) Then PAS = PIG.Text Dim PAS2 As String = e.Item.Cells(2).Text Dim dr As DataSet1.認証Row dr = DataSet11.認証.Rows.Find("ID") dr.Delete() OleDbDataAdapter1.Update(DataSet11) DataGrid1.DataBind() End If End Sub ========================= これではできないのでしょうか? 教えてください。

  • SQLデータベースを削除する方法

    ACCSESSのアップサイジングウイザードで作ったSQLデータベースの削除方法を教えてください。お願いします。

  • SQLとデータベースを学ぶには?

    今年からIT企業に勤める者です。 先輩から「JavaとSQLを勉強しといて」と言われました。 Javaも苦手ですが、データベース関係は、研修でサラッと触れてから無視してました。基盤に近い感じがして更に苦手意識があります(文系出身ということも関係しているかも)。 そこで、苦手意識のある人でも学びやすい、データベース関係のテキストや問題集、サイトでオススメのものを教えて下さい。なお、会社はIBMグループということもあり、DB2というものを使ってるそうです(RDBSについてもよくわかってません)。 よろしくお願いします。