質問: teratailを初めて利用します。 こういったサイトを利用するのも初めてですので、 不慣れな点、質問の不備につきましてはご了承ください。 【質問概要】 データベースアクセスについて 【使用言語/環境】 言語:C++/CLI データベース:SqlServer2012 【質問内容】 現在、データベースの接続にSqlConnectionクラスを使用しております。 接続文字列を指定して1つのデータベースに接続した状態です。(仮にデータベースAとします) この接続済みのSqlConnectionオブジェクトを用いて別データベース(仮にデータベースBとします)の内容を参照することは可能なのでしょうか。 SqlConnectionクラスでなく別クラスで実現可能なのであれば、ご教示願えれば幸いです。 宜しくお願いします。
回答: landy77様。ご回答ありがとうございます。 次回以降は、ソースコードも記載して質問したいと思います。 今回の質問内容に関しては自己解決いたしましたので、解決方法を記載させて頂きます。 まず、初めに接続方法を以下に記載させて頂きます。 ※不要な箇所は省いておりますのでご了承ください。 【データベース接続コード】 String ^l_Str = "Data Source=インスタンス名;Initial Catalog=接続データベース;User ID=接続ユーザー; password=接続パスワード; pooling=false"; m_Con = gcnew SqlConnection( l_Str ); m_Con->Open(); 上記のように接続しておりました。 landy77様の仰るように、「Initial Catalog=接続データベース;」の箇所を接続したいデータベース名に変更してからなら問題なく接続できるのですが、接続データベースを変更せず、上記したm_Conというオブジェクトを用いて別データベースへ接続したいという質問でした。 以下の方法で解決しましたので、コードを記載させて頂きます。 【別データベース接続コード】 String ^l_Str = "EXECUTE sp_executesql N'INSERT INTO [接続したい別データベース名].[dbo].[テーブル名] VALUES( @フィールド名 )', N'@フィールド名 varchar(20)', @フィールド名 = '取得条件'"; m_sqlCmd = gcnew SqlCommand( l_Str, m_Con ); m_sqlCmd->ExecuteNonQuery(); 「sp_executesql」拡張ストアドプロシージャを使用すればm_Conが現在接続しているものとは異なるデータベースへのアクセスも可能だと判明しました。 以上です。 landy77様、また回答は頂きませんでしたが、 この質問をご覧頂き考えて頂きました皆様、ありがとうございました。