• 締切済み
  • すぐに回答を!

VB2005のデータソースの切り替えについて

VB2005を使用して社内の業務ソフトウェアの開発をしています。 本番環境ではデータベースソフトとしてSQL Server 2005を使用する予定になっているのですが、開発環境ではAccessのmdbファイルを使用したいと考えています。 この場合、Accessのファイルをデータソースとして開発したプロジェクトに含まれる、app.configの <connectionStrings> <add name="テストDB.My.MySettings.テストDBConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\テストDB.mdb" providerName="System.Data.OleDb" /> </connectionStrings> の部分を、 <connectionStrings> <add name="テストDB.My.MySettings.テストDBConnectionString" connectionString="Data Source=[サーバー名];Initial Catalog=テストDB;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> と書き換えても、うまく動作しません。 データベースに接続するのがOleDbConnectionになっているため、データソースをSQL Serverに変えても動かないのはわかるのですが、開発時にAccessを使用して、本番環境ではSQL Serverを使用する、といった切り替えを簡単にできる方法というのはあるのでしょうか? SQL Server同士であればapp.configの接続文字列を変えるだけで簡単に変更することができたのですが...

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数479
  • ありがとう数0

みんなの回答

  • 回答No.2

SQLサーバ以外のデータベースも使用する可能性があるなら、 OleDBの方で作成しなければなりません。 もちろん、OleDBで作るとSQLサーバに接続した場合にはSqlDBより遅いみたいですが仕方がありません そのかわり、Access,SQLサーバ,オラクル等、色々なデータベースと接続できます。

共感・感謝の気持ちを伝えよう!

質問者からの補足

>OleDBの方で作成しなければなりません。 >そのかわり、Access,SQLサーバ,オラクル等、色々なデータベースと接続できます。 SQL Serverを使用するときは、SqlClient.SqlConnectionを使用しないとダメだと認識していたのですが、OleDBConnectionでもSQL Serverに接続できるのでしょうか? 接続できるとしたら、是非こちらのやり方を研究してみたいと思います。

関連するQ&A

  • VB.NET ORA-12170

    http://okwave.jp/qa/q8420174.html ↑ VB.NETで作成したアプリでこちらの質問で無事解決し、違う環境で試したところORA-12170の タイムアウトエラーが発生しました。 SQL*Plusからの接続は問題ありません。 わからないのはWEBアプリの方は接続できるのに、コンソールアプリの方がこのエラーになってしまいます。 どちらのアプリの接続文字列も同じData Sourceを指定してます。 「db1」がTNSNAMES.ORAに記述している識別子になります。 WEBアプリ側 (Web.configに記述) <connectionStrings> <add name="oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1" providerName="System.Data.OleDb" /> </connectionStrings> コンソールアプリ側 (INIファイルに記述) ConnectionString=Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1 一般的にはDBサーバにネットワークがつながってないなど単純な理由のようですが、 WEBアプリは接続できるので、そういうことはあり得ないと思います。 コンソールアプリの問題と思うのですが、どんな原因が考えられるでしょうか?

  • VBのデータグリッドの表示が消えてしまいました。何故でしょうか?

      cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\生徒管理\生徒.mdb;" cn.Open mySQL= "SELECT * FROM 2学年 " _ & "WHERE (((所属)='" & frmPW.cmb生徒.Text & "'))" Set rs= New ADODB.Recordset rs.Open mySQL, cn, adOpenStatic Set DataGrid1.DataSource = rs と記述していて、それまでデータグリッドにデータが上手く表示されていたのに、 接続先のmdbファイルにパスワードを設定して、ConnectionStringの設定部分を   cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\生徒管理\生徒.mdb;" & _ "Jet OLEDB:Database Password=seito2;" に変更したところ、データグリッドにデータが表示されなくなりました。 データベースへの接続は上手くいっているようなのですが、何故データグリッドに データが表示されなくなったのでしょうか。 よろしくお願いします。

  • MDBファイルがオープンできません

    C#2005で作ってます。 // データベース接続 Connection = ProviderFactory.CreateConnection(); Connection.ConnectionString = csBuilder.ConnectionString; Connection.Open(); Connection.Open()でエラーになります。 「'Microsoft.Jet.OLEDB.4.0' プロバイダーがローカル コンピューターに登録されていません」 Connection.ConnectionStringはProvider='\"Microsoft.Jet.OLEDB.4.0\"';Data Source='\"C:\test.mdb\"' と設定されてます。 上記エラーになる原因としてはx64環境だとJetエンジンが対応していないのでという 回答はいくつも見ましたが、開発・実行している環境は、ともにWindowsXP x86です。 しかもx86でコンパイルしても直りません。 何をどうすれば動くものなのでしょうか?

  • 回答No.1
  • redfox63
  • ベストアンサー率71% (1325/1856)

AccessDataSourceでは無くSqlDataSourceの派生クラスでMDBを指定すれば良いのではないでしょうか データソースを追加する際に『データベース』を選択 『新しい接続』ボタンをクリック 『接続の追加』ダイアログで「変更」ボタンをクリック データーソースの種類を『Microsoft Access データベースファイル』に変更してMDBファイルを指示してやれば良いように思います

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご回答ありがとうございます。 新しいデータソースを追加し、「新しい接続」を選びますよね。その後、データソースの種類を「Microsoft Access データベースファイル」を選択すると、Accessのファイルをデータソースとしたデータセットが作成されるのはわかります。 この場合、Accessを使用して作成したデータソースは、接続文字列がSQL Serverを使用して作成したものと違う名前を付けなくてはいけませんよね? また、その次に出てくるデータセット名もSQL Serverを使用したものと違うものを使用しなくてはいけません。 新しいデータソースを追加したのだから、当然接続文字列やデータセット名を違うものにしなきゃいけないのも納得がいきます。 問題は、データセット名が異なると、Accessに切り替えしようとすると、SQL Serverを使用したデータセット名を使って開発した部分を、Accessで作成したデータセット名に書き換えないと動作しないと思うのですが... そうなってくると、各フォームに張り付いているコントロールのデータ連結を全部やり直さないといけなくなるので、SQL Server同士の「app.configの接続文字列を変える」といった簡単な方法での切り替えは出来ないように思いますがいかがでしょうか?

関連するQ&A

  • x.aspxとx.aspx.vbの値の受渡について

    asp.net4で開発を実施しております。 FormViewを使ってデータの登録を行おうとしております。 form1.aspx.vbで設定した変数を、form1.aspx側のsqlにて使いたいと思っているのですが、どのようにすればよいでしょうか? 【form1.aspx.vb】 sub aaa = 1 end sub 【form1.aspx】 : <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:DB1ConnectionString %>" DeleteCommand="UPDATE Table1 SET [Flg1] = @aaa WHERE [CD] = @CD" <DeleteParameters> <asp:Parameter Name="CD" Type="String" /> <asp:Parameter Name="aaa" Type="String" DefaultValue="<%= aaa %>" /> のように作ってみたのですが、うまくいきません。 どの様にすればよいのかご教示いただければと思います。  よろしくお願い致します。

  • C♯、PostgreSQLでDB接続用クラスを作りたい。

    開発環境は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♯に慣れていないため、全般、作りについてアドバイス いただけたらと思います。 よろしくお願いします。

  • app.configに接続文字列を設定する方法と暗号化について

    Windowsアプリケーションを勉強中です。 app.configにDB接続文字列を設定して暗号化したいのですが、一般的な手順を教えてください。 私は下記のようにやってみたのですが、うまくいきませんでした。 (1)プロジェクトのプロパティのsettingsで接続文字列を入力 (2)ファイル名をweb.configに修正 (3)コマンドプロンプトでaspnet_regiis -pe "ConnectionStrings" &#8211;app “/web.configのパス”を実行 これだと、ConnectionStringsが見つかりません。のエラーがでます。configファイルの接続文字列は <ConnectionStrings>セクションはなく<userSettings>に書き込まれています。 と、いうことは(1)のやり方がまずいのでしょうか? どなたか教えてください! よろしくお願い致します。

  • ASP.NET で意味不明のエラーが発生!教えてください

    web.configに以下の定義をしました。 Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|\db1.mdb" 以下をメインの処理で設定 Using connection As New OleDbConnection(connectionString) 「connectionString」で以下のメッセージが 表示されます。どのようにしたらエラーが解決できるのでしょうか? 教えてください。 This application is currently offline. To enable the application, remove the app_offline.htm file from the application root directory

  • ExcelVBAからAccessにアクセスする

    ExcelVBAからパスワード付きAccessにアクセスする ExcelVBAからADOでAccessに次のようにしてアクセスしています。 Dim Cnn As ADODB.Connection Set Cnn = New ADODB.Connection Cnn.ConnectionString = \"Provider=Microsoft.Jet.OLEDB.4.0;\" _ & \"Data Source=\" & mdbのフルパス Cnn.Open パスワード付きのmdbにアクセスするのはどのようにしたらよろしいでしょうか?

  • VB.NET Oracle接続 32、64bit

    VB.NET 2010でOracle11gに接続するプログラムを作っていますが、 接続方法がいまいちわからずに困っています。 プログラムを動かすサーバーはWindows Server 2008 R2の64bitだったので、 Oracle Clientも合わせた方がいいのかなと思い、64bit版をインストールしました。 ASP.NETのWEBアプリでは以下の接続文字列を用いてADO接続できました。 パラメータ値は例です。 (Web.configに記述) <connectionStrings> <add name="oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1" providerName="System.Data.OleDb" /> </connectionStrings> 次に、コンソールプログラムを作成し、同じサーバーで上記と同様の接続文字列で 接続しようとしましたが、エラーとなり接続できませんでした。 いろいろ記述を変えても接続できませんでしたが、最終的にOracle Clientの 32bit版を64bit版と違うフォルダにインストールし、以下の接続文字列で接続 できました。(INIファイルに記載) ConnectionString=Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1 この状態でWEBアプリの方は何を使っているのかと思い、64bit版のインストールフォルダを リネームしたところ、WEBアプリの方は接続できなくなりました。 現状では32bitと64bitのOracle Clientが両方必要な状況ですが、本来ならどちらかだけで すむと思います。 32bitと64bitで接続文字列が変わるという情報は得られませんでした。 何がまずいのでしょうか? 最初から32bit版をインストールすれば良かったのでしょうか。

  • VS2010 VB SQLServer2008

    VS2010のVBでSQLServer2008に接続するプログラムを作成しています。 メインDBはWinXPになります。 WinXPのDBに接続しようとしている端末はWin7です。 LOCALならばSQLServerに接続し、作成、更新、削除が可能です。 LOCALのVBのプログラムの記述は問題ないかと思います。 しかし、Win7からWinXPのSQLServerのDBを接続したいのですが、エラーになってしまします。 エラー内容:ユーザー"ユーザー名"はログイン出来ませんでした。 テスト的にWin7の「SQL Server Management Studio」を起動して接続するとWinXPのDBは参照する事が出来ますので接続する環境は問題ないと思っています。 VBのプログラムから接続ができませんので、プログラムの問題なのでしょうか。 <VBの記述>   Imports System.Xml Public gCn1 As New SqlClient.SqlConnection() Private Const mstrDataSource As String = "Data Source = User\SQLEXPRESS,1433;" Private Const mstrSecurity As String = "Integrated Security = false;" Private Const mstrCatalog As String = "Initial Catalog = " & "TestTable;" Private Const mstrUser As String = "User ID = " & "User;" Private Const mstrPass As String = "Password = " & "1234;" '--- Public Function Proc_DBConnect1() Try gCn1 = New System.Data.SqlClient.SqlConnection() gCn1.ConnectionString = mstrDataSource gCn1.ConnectionString &= mstrSecurity gCn1.ConnectionString &= mstrCatalog gCn1.ConnectionString &= mstrUser gCn1.ConnectionString &= mstrPass gCn1.Open()   <= ここでエラーとなる。 Catch ex As Exception MsgBox(Err.Description)  <= ここでエラーの内容が表示される GoTo ExitProc_DBConnect1 End Try ExitProc_DBConnect1: Exit Function End Function ご教授の程よろしくお願いします。

  • ASPでのSQLインジェクション対策

    ASPにて、ADOでAccessにアクセスする際にSQLインジェクション対策はどのようにしたらよいでしょうか。 現状は以下の様にしています。(name)は画面から受け取ったパラメータです。 Set aConn = CreateObject("ADODB.Connection") aConn.Provider = "Microsoft.Jet.OLEDB.4.0" aConn.ConnectionString = Server.MapPath("DB.mdb") aConn.open SQL = "SELECT A FROM TBL WHERE NAME = " & name ...... 宜しくお願いします

  • VB2005からMSDE2000Aに接続したいのですが、、

    VB2005からMSDE2000へ接続しようと思います。このMSDE2000へAccess2002では接続できているのでMSDE2000自体には問題はないかと思います。 手順は: VB2005にSqlConnectio1を配置し、 ConnectionString → 新しい接続 の 接続の追加でデータソースとデータベースファイル名を指定して接続の確認を行うのですが --- エラー ---- サーバーへの接続を確立しているときにエラーが発生しました。SQL Server 2005 に接続しているときときにこのエラーが発生した場合は、SQL Server の既定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。 (provider: 名前付きパイプ プロバイダ, error: 40 - SQL Server への接続を開けませんでした) となって接続できません。 チェックポイントはどこでしょうか? よろしくお願いします。

  • ASP.Net Web.Config 接続文字列が

    お世話になります。 Web.Config から 接続文字列を取得しようと下記のようなコードをサイトから学んだのですが、 Dim conStr As String = ConfigurationManager.ConnectionStrings("ConnectionStringSQL").ConnectionString Dim conn As SqlConnection = New SqlConnection(conStr) これを実行すると、エラーになってしまいます。 "Provider=SQLOLEDB;Data Source=SERVER01;Integrated Security=SSPI;Initial Catalog=TESTSQL" 上記が接続文字列なのですが、Provider=SQLOLEDB この部分を取り除き、 "Data Source=SERVER01;Integrated Security=SSPI;Initial Catalog=TESTSQL" このように直接、接続文字列を上記のようにすると、問題なく動くのですが、何かおかしいと思うのですが、わたくしの方にミスや足りない個所があれば、是非、ご指摘いただければと存じます。 Dim conStr As String = ConfigurationManager.ConnectionStrings("ConnectionStringSQL").ConnectionString Dim conn As SqlConnection = New SqlConnection(conStr) 上記のように記述して接続文字列を取得設定できればスマートだと思うのですが・・・・ よろしくお願いいたします。