質問編集履歴

1 追記

chintao1224

chintao1224 score 87

2017/07/28 00:27  投稿

VB.Netでpostgresqlのテーブルselect
win7で、vb2017(community版)、postgresql9.6を使っています。
TESTテーブルをselectしてデータがあればupdate、なければinsertしようと思っています。
何とかソースを書いたんですが、うまく動作しません。
Npgsqlを使っています。
```vb.net
   cnは接続文字列です。
       Dim strSQL As String = "SELECT * FROM public.TEST WHERE ID='" & Code.ToString() & "';"
       Dim cmd As NpgsqlCommand = New NpgsqlCommand(strSQL, cn)
       Dim reader As NpgsqlDataReader = cmd.ExecuteReader()
       If reader.HasRows = False Then
           インサート文
       Else
      アップデート文
       End If
```
dim readerのところでエラーになります。
「Npgsql.NpgsqlException: '外部コンポーネントが例外をスローしました。'」
コード自体間違っているのでしょうか。
コード自体間違っているのでしょうか。
ソースをまとめてみました。
```vb.net
       Dim npgCnct As NpgsqlConnection
       Dim npgCmnd As NpgsqlCommand
       Dim npgDR As NpgsqlDataReader
       Dim strSql As String
       npgCnct = New Npgsql.NpgsqlConnection
       npgCnct.ConnectionString = "Server=localhost;Port=5432;User Id=user1;Password=pass;Database=TESTDB;"
       npgCnct.Open()
       strSql = "SELECT * FROM public.TEST;"
       npgCmnd = New NpgsqlCommand
       npgCmnd.Connection = npgCnct
       npgCmnd.CommandText = strSql
       npgDR = npgCmnd.ExecuteReader()
```
やはりnpgDR = npgCmnd.ExecuteReader()のところで下記のエラーが出ます。
「Npgsql.PostgresException: '外部コンポーネントが例外をスローしました。'」
なぜエラーになるのでしょうか?
  • PostgreSQL

    1604 questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

  • VB.NET

    1197 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る