SQLserverのテーブルを編集したいです。
DataGridViewに表示まではできるのですが、その後
・内容の編集
・行削除
・行追加
をしたら、ボタンをクリックして更新という動作を行いたいです。
簡単に行う方法はありますか?
特定のテーブルだけというわけではないので、可能であればデータソース構成ウィザードは使用したくありません。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
他で少し回答が出ていますがDataGridViewを含んだ場合。
主キーが設定されている事が前提ですが、DataSetクラスとSqlDataAdapterクラス、SqlCommandBuilderクラスを使うと編集結果をデータベースへ自動で更新する事ができます。
簡単
?かは人それぞれなのでお気にめすか分かりませんがウィザードを使わずコードで行うとこんな感じ。必要最低限なので後で工夫してくださいね。
DataSetやDataTableは別個(メモリ)に表形式で持っていますのでデータベースとの接続を切ってもデータを保持しています。
まぁここではまたデータベースを更新しないといけないので切らずに。
vb.net
1Imports System.Data.SqlClient 2Public Class Form1 3 Private Cn As New SqlConnection() 4 Private Builder As New SqlConnectionStringBuilder() 5 Private DaAdap As SqlDataAdapter 6 Private DaSet As New DataSet() 7 8 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 9 10 Builder.DataSource = "(local)\SQLEXPRESS" 11 Builder.InitialCatalog = "<データベース名>" 12 Builder.IntegratedSecurity = True '特に指定がなかったのでWindows統合認証 13 14 Cn.ConnectionString = Builder.ConnectionString 15 DaAdap = New SqlDataAdapter("select * from <テーブル名>", Cn) 16 '追加・更新・削除を自動で処理するためのオブジェクト 17 Dim CmdBuilder As New SqlCommandBuilder(DaAdap) 18 19 DaAdap.Fill(DaSet) 20 DataGridView1.DataSource = DaSet.Tables(0) 21 22 End Sub 23 24 '更新ボタン 25 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 26 27 'DataGridViewで編集した結果をDataSetを通してデータベースを更新 28 DaAdap.Update(DaSet) 29 30 End Sub 31 32 Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing 33 DaAdap.Dispose() 34 Cn.Dispose() 35 End Sub 36
投稿2019/03/05 13:08
総合スコア334
0
特定のテーブルだけというわけではないので、可能であればデータソース構成ウィザードは使用したくありません。
そこを考え直さないと難しいと思いますが、「可能であれば」程度の話で必須ではないのであれば、やはり Visual Studio のウィザードを使って定番の構成のアプリを作る以外に現実的な方法はないと思います。
ご存知かもしれませんが、DB が SQL Server であれば以下のチュートリアル:
チュートリアル : データベースへのデータの保存 (単一テーブル)
https://docs.microsoft.com/ja-jp/previous-versions/0f92s97z(v=vs.120)
10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688
・・・のように Visual Studio のデータソース構成ウィザードを利用して型付 DataSet + TableAdapter を作って、それを利用してアプリを作ると、以下のページの図のような構造のアプリが、ほとんど自分でコードを書くこと無しに作れます。
Windows フォーム アプリケーションでのデータへの接続
https://docs.microsoft.com/ja-jp/previous-versions/wxt2cwcc(v=vs.120)
操作に慣れると 10 分もかからず作れるはずです。自力で一からコードを書く場合のような種々の問題に悩むことはなくなり、開発工数は激減するはずです。保守工数も減るはずです。お試しください。
【追記】
書き忘れましたが、データソース構成ウィザードを使うメリットとして、アプリの作成が簡単になるだけではなく、Visual Studio 2008 から新しく追加された TableAdapterManager クラスを利用できることがあります。
TableAdapterManager には、階層更新を実現するロジックを持つ UpdateAll メソッド、手動トランザクション処理が実装されており、これを使わない手はないと思います。
TableAdapterManager
http://surferonwww.info/BlogEngine/post/2011/12/21/TableAdapterManager.aspx
投稿2019/03/05 10:18
編集2019/03/06 00:55退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/06 01:29