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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PostgreSQL

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

19503閲覧

Visual Studio 2015 PostgreSQL 接続&使用方法

niko2

総合スコア15

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PostgreSQL

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

1クリップ

投稿2016/11/22 15:36

編集2016/11/22 15:56

###前提・実現したいこと

Visual Studio 2015 でC#をシステムを開発しています。

現在、日々のトレーニングなどを記録するシステムのカレンダー部分を作っています。

実現したいことは、日付のlabelをクリックするとその日付の画面に飛び、その日の予定一覧が表示されることです。

日々の予定はPostgreSQLに格納してあります。

例:画像1の2016年9月7日のlabelをクリックすると画像2のフォームに移動し、その日の予定が入ることです。
イメージ説明
イメージ説明

###「この質問の本題」
現在、ODBC 経由で PostgreSQL につなぐことを試みています。
(Npgsql を使うことが一般的だが、Visual Studio 2015には対応していないため、ODBCを使用)

しかし、下記のように、エラーメッセージが表示され、PostgreSQLへの接続が失敗しています。
Visual Studio 2015 にてPostgreSQLに接続できる方法を教えていただけないでしょうか?(今まで試したことは質問の最後まとめています。)

イメージ説明

###発生している問題・エラーメッセージ

エラーメッセージOdbc Exception はハンドルされませんでした。(下の画像参照)

イメージ説明
###該当のソースコード

C#

1 string myConnection = string.Empty; 2 myConnection += "DRIVER=PostgreSQL ANSI;";//"DRIVER=PostgreSQL;”でも試したが× 3 myConnection += "SERVER=localhost;"; 4 myConnection += "DATABASE=db_football;"; 5 myConnection += "USERNAME=postgres;"; 6 7 OdbcConnection myConn = new OdbcConnection(myConnection); 8 myConn.Open();

###試したこと

  • 新しいデータソースの追加を行いODBC経由でPostgreSQLの必要なデータソースを用意することはできたが、DataGridView 以外の使用方法が不明で断念。

  • Npgsqlを使用しようとしたがVisual Studio2015には未対応。(参考にしたページ。http://symfoware.blog68.fc2.com/blog-entry-1229.html)

  • myConnection += "DRIVER=PostgreSQL;";


myConnection += "DRIVER=PostgreSQL ANSI;";
に変更したが変化なし。
(参考URL:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12104573057)

###補足情報(言語/FW/ツール等のバージョンなど)

  • Npgsql を使うことが一般的だが、Visual Studio 2015には対応していないため、ODBCを使用。

  • ODBCは32ビットを使用。(OSは64bitだが、Visual Studioが32bitしかないため。)

  • PostgreSQL 9.5を使用。

  • myConnection += "USERNAME=postgres;";のパスワードは設定していないため、ソースに書かなくても問題ないと考え指定していません。(tacsheaven様からご指摘いただいき追記させていただきました。ありがとうございます。)

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

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

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

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

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

guest

回答2

0

ベストアンサー

Visual Studio 2015で最新のNpgsqlを使用したら参考されたサイトのやり方で接続できました。
ただ、これからもデータベースを使用したプログラムを作成するおつもりでしたら、EntityFramworkがお勧めです。
NuGet

C#

1using Npgsql; 2using System.Data; 3 4namespace tera56195 { 5 class Program { 6 static void Main(string[] args) { 7 StringBuilder sb = new StringBuilder(); 8 sb.Append("Server=localhost;"); 9 sb.Append("Port=5432;"); 10 sb.Append("User Id=postgres;"); 11 sb.Append("Password=****;"); //インストール時入れた値 12 sb.Append("Database=test"); 13 14 string connString = sb.ToString(); 15 16 using(var con = new NpgsqlConnection(connString)) { 17 con.Open(); 18 19 //データ登録 20 var cmd = new NpgsqlCommand(@"insert into table01 values (6, 'testdata')", con); 21 cmd.ExecuteNonQuery(); 22 23 //データ検索 24 cmd = new NpgsqlCommand(@"select * from table01", con); 25 var dataReader = cmd.ExecuteReader(); 26 while(dataReader.Read()) { 27 Console.WriteLine("{0},{1}", dataReader["id"], dataReader["name"]); 28 } 29 Console.Read(); 30 } 31 } 32 } 33}

※test01テーブルはID(プライマリキー)とName(text)だけのテーブルです

投稿2016/11/22 22:51

Hey_CH

総合スコア437

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

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

niko2

2016/11/23 10:04

HeyHeyHoさん 回答ありがとうございます。 ご指摘の通り以下のことを修正しましたら解決できました。 ・Npgsqlのバージョンを再度検索し、最新のものを使用 ・パスワードをインストールした時のものを使用 パスワードに関しては、修正前は、ログインロール(ユーザー)postgresを作成ているため、そのパスワードだと勘違いしていました。インストール時のものを使用したら解決できました。 EntityFramworkに関しては、今回はアプリケーションを作成する期限が迫っているため見送ることにしました。 これからもデータベースを使用することはあると思うのでその時は参考にしてみようと考えています。情報ありがとうございます。 前回に引き続きベストアンサーに選ばせていただきました。 ありがとうございます。
guest

0

DB へのログインに必要なパスワードを指定してないように見えますが?
そのせいでログインを蹴られているのでは?

投稿2016/11/22 15:39

tacsheaven

総合スコア13703

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

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

niko2

2016/11/22 15:42

tacsheavenさん、回答ありがとうございます。 失礼しました。 書き忘れましたが、パスワードは設定していないのでなしで問題ないと考え、指定していません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問