• ベストアンサー

dbへの接続について

dbへの接続について Visual Basic2008でVBを勉強中の者です。初心者です。 SQL serverと接続するやりかたを参考書を頼りにコーディングして接続などは問題ないのですが、 プロシージャごとに毎回DBへの接続文字列を指定して接続して、、とやっているのですが何か 無駄なことしている気がしてきました。(同じコードが各フォームの各プロシージャにあるので) DBサーバの情報が変わったときなどもコードを修正するのが大変だと思いました。 こういう場合、何かいい方法はありませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.4

ConfigurationManagerを使えば、正常なパターンは1行で終わるので、何となくわざわざ専用のメソッドを作らなくてもいいような気もしますが、正常じゃないパターンもきちんと対処するのであれば、専用のメソッドを作るのも良いと思います。 例えば、App.configに登録されいてるはずのconnectionStringNameを渡して、戻り値がConnectionStringにするとか。 で、そんなものはないという時は、nullなり長さ0の文字列を返すなりするようにしてみてはいかがでしょうか。

その他の回答 (3)

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.3

ConfigurationManagerというのに、App.configに保存されたConnectionStringを取得するメソッドがあります。 ConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionStringという感じだったと思います。 また、自分で作成するにしても、同じ処理が複数のフォームにまたがってあるというのであれば、あるクラスにConnectionStringを作成する静的なメソッドを作っておいてそれを呼び出すようにするというのが良いかもしれません。

winarrow07
質問者

お礼

回答ありがとうございます。 app.configにConnectionStringを記述して、それを読み出すことに成功しました。 これで接続情報に変更があってもapp.configの変更だけで済みそうです。 あと、同じコードが多数のプロシージャに存在する件ですが、DBに接続するのに 下記のようにコードを書いています。 これはやはりプロシージャごとに書くのが普通でしょうか? Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click Try Dim con As New System.Data.SqlClient.SqlConnection Using con Dim settings As ConnectionStringSettings '接続文字列をapp.configファイルから取得 settings = ConfigurationManager.ConnectionStrings("*****.My.MySettings.connectStrings") If settings Is Nothing Then '接続文字列取得エラー MessageBox.Show("app.configに未登録", "接続文字列") Else '接続文字列の設定 con.ConnectionString = settings.ConnectionString 'DBを開く con.Open()              'DBに対する処理(レコードの追加・変更・削除等) End If End Using Catch ex As Exception MessageBox.Show(ex.ToString, "DB接続エラー") End Try End Sub

  • yutuo
  • ベストアンサー率50% (4/8)
回答No.2

(1)接続文字列を定義します。例えば、SQL serverを連接の場合、 Dim SQLConnString As String = "Server={0};Initial Catalog={1};User ID={2};Password={3};" (2)INIファイル又はほかの定義ファイルから、サーバ名、DB名、ユーザ名とパスワードを取得し、接続文字列をFommatします。 Dim strConn As String = String.Format(SQLConnString, ServerName, DataBaseName, UserName, Password) (3)最後は(2)番目取得した文字列より、DB接続を取得します。 New SqlConnection(strConn)

  • nn1102
  • ベストアンサー率80% (12/15)
回答No.1

接続部分に関しては継承関係のクラスに設計すればよいと思います。 親クラスで接続を管理して派生クラスで各業務処理を行う等。 接続文字列の管理に関しては以下のリンクが参考になると思います。

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms254494.aspx

関連するQ&A

  • Visual Studio2005とDB(Postgles)のことにつ

    Visual Studio2005とDB(Postgles)のことについての質問です。 PostglesのデータをVisualStudioから読み込むにはどうすればいいですか? VisualStudioのデータソースにPostglesのDB名が出て来ず、 (アクセスやSQLサーバしか出てこない)VBとDBを接続させることができず苦戦しています。 誰か教えてください

  • VB2005でDB接続

    勉強で、VB2005でAccessDB接続するプログラムを作成しています。 目的は商品コードを入力すると、DBに売上げが計上され、今日の売上げ内訳一覧を表示する、ごくシンプルな練習用プログラムです。 基本的なコーディングは大丈夫ですが、教科書では非接続型・デザイナでのせてあり、VBサンプル集では接続型・非デザイナで、ややこしく混乱して、理解できずに困っています。何がどう違うんでしょうか。お願いいたします。

  • ストアドプロシージャで別DBに接続

    Oracleのマテリアライズドビューのデータを SQL Server 2008のDBに毎晩取り込む処理を作る必要があり、方法を検討中です。 SQL Serverが稼働しているWindows Server 2003のマシンから、 毎晩タスクで起動させて実行することを考えています。 SQL Serverのストアドプロシージャで実現できないかと考えているのですが、 ストアドプロシージャだけで実現可能でしょうか? Oracleに接続してビューのデータを取得し、それに基づいて、 SQL ServerのDB内のテーブルのデータ追加、更新、削除等を行います。 単純なコピーではなく、データ加工や変換等の処理も行います。 経験がないので、実現可能かというところから教えて下さい。 実現不可能なら、他にどのような選択肢があるか教えていただけると助かります。 よろしくお願いします。

  • vb.netでSQL serverの接続を行うコーディング

    vb.net (vb 2005)でSQL serverの接続を行うコーディングがよくわかりません。 ADO,もしくはDAOを使うところまでわかったのですが、具体的なコーディングがわかりませんでした。 VBの教本とかではSQL serverではなくAccesへの接続だったので、どうコーディングしてよいか混乱しています。 (ADOの場合とDAOの場合の違い)

  • 誰がDBに接続しているのか知りたい

    こんにちは、いつも参考にさせて頂いております。 SQL Server2008でDBを管理しているのですが、 かゆいところに手が届かない状況です。どうかお助けください。 [状況] 今管理しているDBは複数個あり、各DBに接続している人は複数います。 (といっても2ケタにも行きませんが。) そんな中、テーブルのプロパティなどを変更したいときに、 誰かが接続していると排他エラーが出て変更できないことがあります。 [疑問点] こういう時に、誰が接続しているのか知りたいのですが、 どうすればよいのでしょうか? 監視ツールなどが必要でしょうか。 もしくはシステムテーブルなどにその情報があるのでしょうか? どうかご教授よろしくお願いいたします。 [環境] SQL Server2008 Windows Server2008

  • 子フォームでDB更新後、親フォームに戻った際、DBを読み直しするには??

    Visual Basic 2008 DB:Access MDB 親フォームにはDatarepeater があり、DB情報を表示して該当する情報にあるボタンをクリックすると子フォームが表示されます。 子フォームでその行について修正すると親フォームに戻るのですが、子フォームの情報が反映されません。 子フォームを閉じた際、表示されているデータを最新にしたいのですが、再読込みのコーディングを教えてください。

  • DB接続を動的に切り替えたい

    VS2005を使用してウェブアプリを作成しています。 アプリ内でDBに接続しているのですがローカル環境で開発しているときとウェブサーバで検証する時とで都度接続文字列を変えてWebServiceをアップロードしているのですが動的に判断して適切な接続文字を選択するようにすることは出来ないものでしょうか 開発環境:WINXP VS2005 .NET 2.0 処理の概要は以下です dim conn as string = DB接続文字列 ・・・この部分を動的に変えたい dim cmd as string = SQL文字列 dim adapter as new OleDbDataAdapter(cmd,conn) ・ ・ といった感じです。 良いアイディアがありましたら教えてください

  • DBの接続について

    昨日も同じ質問したのですが また、助けてください DBの接続状態がしりたいのですが DBの接続状態を認識させるために If OraDatabase.State = adStateClosed Then DB_Connect End If ってコーディングいたしました が、一行目でエラー発生でその後の処理が 通りません DB接続部はこんな感じです。 Private Sub DB_Connect() On Error GoTo ERR Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase("ALARM", "ALARM/SHINKO", 0&) End Sub どうか助けてください お願いします 開発環境VB6.0 DBはオラクル9iです

  • DBとMDB2接続

    DB接続していたものをMDB2接続に変更し、INSERTを行うとエラーが発生しています。 DB接続時はMySQL、MDB2接続ではsql Server を使用しています。 INT型でNULL禁止になっているところに値をNULL(もしくは空文字)で入れると(INSERT直前の値をvar_dumpするとSTRING(0) = > "" となっています)、DB接続の場合は0が登録されています。 文字列型の箇所には0ではなく、そのまま空文字として登録されています。 MDB2接続の場合は、下記のエラーが発生しています。 Error converting data type nvarchar to numeric ソースや使用していすシステムは都合により、掲載できないのですが、質問したいことは、 1、DB接続だと空文字を0に変換する機能になっている? 2、MySQLの使用で空文字を0に変換する?sql Serverだとならないのか。 もしMDB2接続で上記のエラーに対する対策方法があれば教えていただけますか? なお、一つ一つ変更するのが、簡単ですが、量が多いので極力避けたいと考えています。 よろしくお願いいたします。

  • JavaScriptでDB接続できなくて、困っています><

    JavaScript初心者です。 ローカルのSQLServerExpressに以下の様に接続にいくと「存在しないか、アクセスが拒否されました」となります。 ちなみに、ManagementStudioではSQL認証で接続できますのでローカルのデータベースに問題はないと思います。また他のDBサーバーのデータベースには接続できますので、Script文にも問題はないと思われます。 localhost\SQLEXPRESSの部分が怪しいような・・・ localhost部分をコンピュータ名やIPに変えてもダメでした。 \を/に変えてもダメでした。 ご存知の方いましたらご教授下さい>< var db; function DBConnect(){ db=new ActiveXObject("ADODB.Connection"); db.Open("Driver={SQL Server};" + "server=localhost\SQLEXPRESS; database=***; uid=***; pwd=***;");} しょうもない間違いだったら、すいません。。。^^;