質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

19491閲覧

VB.NET でdatagridviewを使ってSQLserverのテーブル更新

ya_ay

総合スコア13

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

1グッド

1クリップ

投稿2019/03/05 09:46

SQLserverのテーブルを編集したいです。

DataGridViewに表示まではできるのですが、その後
・内容の編集
・行削除
・行追加
をしたら、ボタンをクリックして更新という動作を行いたいです。

簡単に行う方法はありますか?

特定のテーブルだけというわけではないので、可能であればデータソース構成ウィザードは使用したくありません。

よろしくお願いいたします。

Finekaz👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

shinami

総合スコア334

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ya_ay

2019/03/06 01:29

できました、ありがとうございます。エラー処理等追加して使用させていただきます。
guest

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ya_ay

2019/03/06 01:30

ありがとうございます、読んで理解を深めます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問