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

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

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

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

Q&A

解決済

2回答

11961閲覧

C#でデータベース接続専用のクラスを作り、値を取得する

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2016/10/12 05:35

編集2016/10/12 05:54

###前提・実現したいこと
C#で単語帳アプリを作成しています。DBから単語をIDの順番で取得し、テキストボックスに表示させ、さらに「解答を見る」というボタンのクリックによって単語に紐づく意味をもう一つのテキストボックスに表示させようとしています。しかし、現在DBから単語を取得しようとしているところでエラーが発生しております。

具体的にはVisual Studioのプロジェクトに新しいクラスを追加して、DB接続専用のクラスを作成し、引数で値を受け取り、受け取った値をテキストボックスに表示させようと考えています。前回コンソールアプリケーションで接続を試してみてうまくいきましたが、フォームアプリケーションではエラーが発生しています。

###発生している問題・エラーメッセージ
変数名、try catch文にエラーが発生しています
開始ボタンをクリックしてもビルドエラーになります。。

###該当のソースコード
using Npgsql;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WordCards
{
class DBUtils
{
string conStr = "Server = localhost; Port = 5432; User Id = postgres; Password = password; Database = wordsdb";
NpgsqlConnection conn = new NpgsqlConnection(conStr);

try { conn.Open(); var cmd = new NpgsqlCommand(@"select * from celebsschem.t_celebs", conn); var dataReader = cmd.ExecuteReader(); } catch { } conn.Close(); }

}
###試したこと
先ほども記述したように、コンソールアプリケーションの方では成功していました。

###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio2015のフォームアプリケーションを使用しており、PostgreSQL9.3に接続しようとしています。

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

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

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

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

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

ishi9

2016/10/12 05:50 編集

エラーの内容を見てみるべきかと。catch以降を catch(Exception e){Console.WriteLine(e.Message);Console.WriteLine(e.StackTrace);}と書き直せばエラーの内容がわかります。(改行無しで見にくいのはご勘弁ください)
ishi9

2016/10/12 05:52

あ、WindowsFormでしたね。ではConsole.WriteLineのところをMessageBox.Showに置き換えると簡単に確認できると思います。
退会済みユーザー

退会済みユーザー

2016/10/12 05:56

早速のお返事大変ありがとうございます!情報不足で申し訳ありませんでした。ビルドエラーが発生しておりまして、そもそも動いていない状態です。。どこかおかしいところがあるのかと思いますが、それが検討つかずです。。。
ishi9

2016/10/12 05:57

では、ビルドエラーのメッセージを載せていただけますか?
shika358

2016/10/12 06:03

クラス直下に処理の記述がありメソッドメソッドがないのですが、抜粋したコードでしょうか
退会済みユーザー

退会済みユーザー

2016/10/12 06:06

エラー CS1514 { が必要です。 WordCards エラー CS1513 } が必要です。 WordCards エラー CS1513 } が必要です。 WordCards エラー CS1519 クラス、構造体、またはインターフェイス メンバーの宣言でトークン '(' が無効です。 WordCards エラー CS1519 クラス、構造体、またはインターフェイス メンバーの宣言でトークン '(' が無効です。 WordCards エラー CS1519 クラス、構造体、またはインターフェイス メンバーの宣言でトークン '=' が無効です。 WordCards エラー CS1519 クラス、構造体、またはインターフェイス メンバーの宣言でトークン 'try' が無効です。 WordCards エラー CS0825 コンテキスト キーワード 'var' は、ローカル変数宣言内またはスクリプト コード内でのみ有効です。 WordCards エラー CS0825 コンテキスト キーワード 'var' は、ローカル変数宣言内またはスクリプト コード内でのみ有効です。 WordCards エラー CS0236 フィールド初期化子は、静的でないフィールド、メソッド、またはプロパティ 'DBUtils.cmd' を参照できません WordCards エラー CS0236 フィールド初期化子は、静的でないフィールド、メソッド、またはプロパティ 'DBUtils.conn' を参照できません WordCards エラー CS0236 フィールド初期化子は、静的でないフィールド、メソッド、またはプロパティ 'DBUtils.conStr' を参照できません WordCards エラー CS1520 メソッドは戻り値の型を持たなければなりません。 WordCards 警告 CS0109 メンバー 'AddWordsForm.DBUtils()' は継承されたメンバーを非表示にしません。new キーワードは不要です。 WordCards エラー CS0103 名前 'Close' は、現在のコンテキストに存在しません。 WordCards エラー CS0103 名前 'conn' は、現在のコンテキストに存在しません。 WordCards エラー CS0103 名前 'conn' は、現在のコンテキストに存在しません。 WordCards エラー CS0103 名前 'conn.Close' は、現在のコンテキストに存在しません。 WordCards エラー CS0103 名前 'conn.Open' は、現在のコンテキストに存在しません。 WordCards エラー CS0103 名前 'Open' は、現在のコンテキストに存在しません。 WordCards エラー CS0116 名前空間にフィールドやメソッドのようなメンバーを直接含めることはできません エラー CS0102 型 'AddWordsForm' は既に 'DBUtils' の定義を含んでいます。 WordCards エラー CS1022 型、名前空間の定義、またはファイルの終わりが必要です。 WordCards エラー CS1022 型、名前空間の定義、またはファイルの終わりが必要です。 WordCards エラー CS1022 型、名前空間の定義、またはファイルの終わりが必要です。 WordCards エラー CS1022 型、名前空間の定義、またはファイルの終わりが必要です。 WordCards エラー CS1022 型、名前空間の定義、またはファイルの終わりが必要です。 WordCards
退会済みユーザー

退会済みユーザー

2016/10/12 06:08

大変見にくく申し訳ありません。以上がビルドエラーの一覧です。
guest

回答2

0

ベストアンサー

当てずっぽうですが、多分これが大元のエラーではないでしょうか
(Consoleだと動くということで)

CS0102 型 'AddWordsForm' は既に 'DBUtils' の定義を含んでいます。

DBUtilsクラスが複数定義されていないか調べてください。

投稿2016/10/12 06:17

ishi9

総合スコア1294

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

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

退会済みユーザー

退会済みユーザー

2016/10/12 06:33

当たりでした。あとは値を取れるようにというところです。。またアドバイスいただけたらと思います。
guest

0

こんな感じで動きますか?

using Npgsql; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WordCards { public class DBUtils { public void Method() { string conStr = "Server = localhost; Port = 5432; User Id = postgres; Password = password; Database = wordsdb"; NpgsqlConnection conn = new NpgsqlConnection(conStr); try { conn.Open(); var cmd = new NpgsqlCommand(@"select * from celebsschem.t_celebs", conn); var dataReader = cmd.ExecuteReader(); } catch { } conn.Close(); } } }

投稿2016/10/12 06:15

shika358

総合スコア122

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

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

退会済みユーザー

退会済みユーザー

2016/10/12 06:26

ビルドエラーが減りました!!ただまだエラーが出てますね。。。 エラー CS0501 'AddWordsForm.DBUtils()' は abstract、extern、または partial に指定されていないため、本体を宣言する必要があります。 エラー CS1514 { が必要です。 WordCards エラー CS1513 } が必要です。 WordCards エラー CS1513 } が必要です。 WordCards エラー CS1519 クラス、構造体、またはインターフェイス メンバーの宣言でトークン '=' が無効です。 エラー CS1520 メソッドは戻り値の型を持たなければなりません。 WordCards 警告 CS0109 メンバー 'AddWordsForm.DBUtils()' は継承されたメンバーを非表示にしません。new キーワードは不要です。 エラー CS0102 型 'AddWordsForm' は既に 'DBUtils' の定義を含んでいます。 WordCards エラー CS1022 型、名前空間の定義、またはファイルの終わりが必要です。 WordCards
退会済みユーザー

退会済みユーザー

2016/10/12 06:32

動きました!あとは値をとってこれたらというところです!
shika358

2016/10/12 06:35

呼び出し元に返すなら public void Method() の、voidを適切な型に変更してreturnしてあげれば大丈夫かと思いますよ
退会済みユーザー

退会済みユーザー

2016/10/12 06:38

ありがとうございます。1度調べてやってみたいと思います。初心者で未熟者ですが、また 質問した際にはよろしくお願いいたします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問