開発環境はC♯、DBはPostgreSQLです。
DBアクセス用に共通的に使うクラスを作りたいと思っています。
やりたいことは、
・接続文字列はapp.configから取得
・コネクションのプーリング(絶対ではないので出来ない、または
メリットがないのであればやらなくても構わない)
以下、途中ですが、書いてみたソースです。
--------ここから
using System;
using System.Data;
using System.Configuration;
using System.Collections.Generic;
using System.Data.Common;
using System.Text;
using System.Data.OleDb;
namespace InventoryMngProtoType
{
class DataBaseAccess
{
//グローバル変数
string connectString;
//DB接続用共通クラス
//DataReader、DataSet…
public DataBaseAccess()
{
//接続文字列等設定
connectString = System.Configuration.ConfigurationManager.ConnectionStrings["DatabaseConnection"].ConnectionString;
OleDbConnection con = new OleDbConnection(connectString);
//コネクションオープン
if (con.State == ConnectionState.Closed)
{
con.Open();
}
}
public DataSet Getdataset(string sql)
{
System.Data.DataSet ds = default(System.Data.DataSet);
//パラメタのSQLを投げ、データを取得、DataSetで返す。
System.Data.OleDb.OleDbDataAdapter MyCommand;
MyCommand = new System.Data.OleDb.OleDbDataAdapter(sql, connectString);
ds = new System.Data.DataSet();
MyCommand.Fill(ds);
return ds;
}
}
}
--------ここまで
--appconfigの内容
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="DatabaseConnection"
connectionString="Data Source=localhost"
providerName=" PostgreSQL OLE DB " />
</connectionStrings>
</configuration>
--
まずはSQLをDataSetで返すメソッドから作ろうとしています。
コンストラクタでコネクションを開いておいて、Dispose用の
メソッドを用意して、そこで閉じるような作りを考えています。
しかし、
>MyCommand = new System.Data.OleDb.OleDbDataAdapter(sql, connectString);
ここで接続文字列が第二引数として必要なようなので、結局、
ここでもコネクションを開くことになるのでしょうか?
C♯に慣れていないため、全般、作りについてアドバイス
いただけたらと思います。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
OleDBbonnectionオブジェクトメンバーに持っているなら
OleDBDataAdapterを生成するなら3番目のタイプでいいように思います
4番目の connectionStringを使うタイプが .NETのランタイムの中でコネクションを自動生成するようなことを聞いたことがあります
MyCommand = new OleDbDataAdapter( sql, con );
とします
コンストラクター内の 変数conを connectionStringと同じレベルで宣言したほうがいいでしょう
class DataBaseAccess
{
//グローバル変数
string connectString;
//DB接続用共通クラス
//DataReader、DataSet…
public DataBaseAccess()
{
//接続文字列等設定
connectString = System.Configuration.ConfigurationManager.ConnectionStrings["DatabaseConnection"].ConnectionString;
OleDbConnection con = new OleDbConnection(connectString);
を
class DataBaseAccess
{
//グローバル変数
string connectString;
// 宣言をココへ移動
OleDbConnection con;
//DB接続用共通クラス
//DataReader、DataSet…
public DataBaseAccess()
{
//接続文字列等設定
connectString = System.Configuration.ConfigurationManager.ConnectionStrings["DatabaseConnection"].ConnectionString;
// Connectionオブジェクトの生成
con = new OleDbConnection(connectString);
といった具合で ・・・
回答ありがとうございました。
お礼が遅れまして申し訳ありません。
おっしゃる通り、conはグローバル変数にしたほうが良いですね。
だんだんわかってきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- 英語 From the data mentioned that extracted from the cu 1 2023/01/25 19:55
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- 英語 『G19 Gen5 MOS - Modular Optic System for Gen5』 の 『 1 2023/03/05 13:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
接続を切っても・・・?
-
マインクラフトのサーバーに接...
-
自宅からeo光で自宅NASへのアク...
-
海外のサイトで動画を購入した...
-
価格コムに接続できません。
-
Wi-Fi接続について
-
Ruby on railsをrails sで立ち...
-
VPN接続確立後、Pingが通らない
-
VPN接続時のネット接続
-
iPhoneでIPアドレスを変更する...
-
Dell Inspiron 14 5415 をコン...
-
ノートパソコンのサイド(USBポ...
-
インターネット接続できません...
-
バンジージャンプのデータを貰...
-
パソコンの「ローカル」って、...
-
8000番や8080番のポー...
-
Windows10でUDPのポート解放が...
-
PCがのぞかれてないか調べる...
-
DELL INSPIRON1300のUSBがささ...
-
USBメモリ増設アダプターについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ポリシー等で特定のサイトだけ...
-
VPN接続時のドメイン参加について
-
リモートデスクトップと動的IP...
-
TERATERMだけSSH接続できない
-
ログについて
-
特定のクライアントPCからssh接...
-
phpMyAdmin ログインできない
-
FireFoxを社内で使用する場合の...
-
Ruby on railsをrails sで立ち...
-
iphoneを遠隔操作したい
-
VPNでyahooが見れない
-
sshでは接続できるのにsftpは接...
-
CiscoルータへのTELNET接続がで...
-
VBからネットワーク接続の制御(...
-
画像のように、鍵のかかってい...
-
リモートデスクトップに再接続...
-
FTPサーバに外部から接続で...
-
TeraTermマクロでlistboxを使い...
-
リモートデスクトップ接続のア...
-
掲示板を閲覧中のPCのIPアドレ...
おすすめ情報