プロが教える店舗&オフィスのセキュリティ対策術

質問させてください。
環境:PostgreSQL、VB.NET2010、Npgsql

PostgreSQL上のDBには以下のテーブルを準備

create table test_table (
id serial not null primary key,
category_name text not null
);
とりあえず1行のデータのみ入っています。


ユーザフォームにDataGridViewとButtonとBindingSourceを1つづつ配置。

以下のプログラムでフォームロード時にDBの内容をDataGridViewへ表示させることまでできました。

Imports Npgsql

Public Class Form1
Public Const conn = "Server=****;Port=****;User Id=****;Password=****;Database=****;"

Private DA As NpgsqlDataAdapter
Private DT As New DataTable

Private Sub Form1_Load(省略)
Try
Dim command As String = "select * from test_table"
DA = New Npgsql.NpgsqlDataAdapter( command, conn )
DT = New DataTable
DA.Fill(DT)
BindingSource1.DataSource = DT
DataGridView1.DataSource = BindingSource1.DataSource
Catch ex As Exception
MessageBox.Show(ex.Message.ToString(), "エラー")
End Try
End Sub
End Class

そこで、このDataGridViewへユーザが入力、修正し、配置したボタンを押すことでDBへ反映させたいのですが、この部分がよくわからなくて困っています。
PostgreSQL以外のDBはサンプルが沢山あるのですが・・・・
よろしくお願いします。

A 回答 (2件)

>>業務はそれを待ってくれずとりあえず少しでも進めなければいけないのが辛いところです。



小学生に「微分・積分の問題を解きなさい」と強制しても無理なように、知らないことはできません。そんな業務できないと言いましょう。

>>Npgsql独自の部分があるようで、他のDB向けにかかれたサンプルではエラーになったり、動かなかったりしています。

単純に、DBの追加・更新・削除等だけなら、Npgsql独自の機能なんて不要だと思えますけどね。
独自部分を探して、とりあえずそれを抜きに動作するようにしてみれはどうでしょう?

>>実際のソースだけでなく、参考になるHP,サンプルソース等ありましたらお教え下さい。

私もネットや本やで参考になるサンプルを探したのですが、分かりやすくて参考になるサンプルソースは紹介した書籍でしかありませんでした。
    • good
    • 0
この回答へのお礼

お礼が遅くなりすみません。

>>小学生に「微分・積分の問題を解きなさい」と強制しても無理なように、知らないことはできません。そんな業務できないと言いましょう。

社会ではできないでは通用しない状況もあったりします。なかなか正論では通用しません。

>>単純に、DBの追加・更新・削除等だけなら、Npgsql独自の機能なんて不要だと思えますけどね。
独自部分を探して、とりあえずそれを抜きに動作するようにしてみれはどうでしょう?

通常のSQLコマンドでの操作はできています。
今回伺いたかったのは、DataGridView上でのデータ操作です。

>>私もネットや本やで参考になるサンプルを探したのですが、分かりやすくて参考になるサンプルソースは紹介した書籍でしかありませんでした。

あれからもいろいろと探して見ましたが、なかなかずばりのものはないですね。
C#のサンプルを見つけましたので、それをVBに移植してなんとか動きそうなところまでたどり着きました。
ありがとうございました。

お礼日時:2011/11/30 21:32

>>PostgreSQL以外のDBはサンプルが沢山あるのですが・・・・



Npgsqlの説明をみると、
「.Net フレームワーク用に開発されたプログラムであればどんなものでもデータベースサーバにアクセスできます。」
と書かれています。
なので、DBがPostgreSQLであろうが、SQLServerであろうが、言語が同じサンプルなら問題なく動作するものと思いますよ。

>>ユーザが入力、修正し、配置したボタンを押すことでDBへ反映させたいのですが、この部分がよくわからなくて困っています。

これは、質問者さんがPostgreSQLというよりも、VB.NET2010のDBプログラムそのものの理解ができていないのだと思います。
「フォームロード時にDBの内容をDataGridViewへ表示させることまでできました。」
なんて書かれているくらいですからね。

実際問題として、.NETでDBを扱うのは、一見すると簡単そうに見えますが、実際には、DBプログラミングに関して、十分な知識が無いと無理だと思います。
.NET以前は、人間が頑張ってDBのプログラムのコードをガリガリと書いていた部分が、.NETではかなり自動生成されるようになりました。
が、それらのコードの果たす機能が不要になったわけではないので、その「見えなくなった機能」の部分を理解していないと訳解らなくなるってことです。

.NETでDBを扱われるのでしたら、「プログラミングADO.NET 2.0」(定価8,500円)を購入されて精読されることをお勧めします。
    • good
    • 0
この回答へのお礼

早速の回答、ありがとうございます。
>.NETでDBを扱われるのでしたら、「プログラミングADO.NET 2.0」(定価8,500円)を購入されて精読されることをお勧めします。
確かにいろいろな知識が不足しているため、勉強中ですが、業務はそれを待ってくれずとりあえず少しでも進めなければいけないのが辛いところです。

>DBがPostgreSQLであろうが、SQLServerであろうが、言語が同じサンプルなら問題なく動作するものと思いますよ。
Npgsql独自の部分があるようで、他のDB向けにかかれたサンプルではエラーになったり、動かなかったりしています。

>「フォームロード時にDBの内容をDataGridViewへ表示させることまでできました。」
事細かにプロセスを説明する場ではないと思ったので上のような表現をしました。
どのように表現するのが正しいのでしょうか?

実際のソースだけでなく、参考になるHP,サンプルソース等ありましたらお教え下さい。
よろしくお願いします。

お礼日時:2011/11/26 07:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!