2016-11-16 26 views
-1

VS2015を使用する方法を習得しようとしていますが、この問題に関してインターネット上に多数の同様の投稿がありましたが、ソリューションに近い。web.configファイルに格納されている接続文字列がSQL Server接続を開けない

私はSQL Serverデータベースに書き込もうとしており、データベースと接続文字列の両方をテストして、両方が正常に動作していることを確認しています。私はweb.configに行き、接続文字列が言ったの定義を作成する方法のうちそれと

:私の知る限り、これは正常に動作伝えることができるよう

<connectionStrings> 
    <add name="Name" 
     connectionString="Data Source=<desktopname>\\SQLEXPRESS01;Integrated Security=SSPI;Initial Catalog=Database1"/> 
</connectionStrings> 

...

しかし、私は、次のように文字列を宣言:

01:どういうわけか、これは返す何
MyConnectionString = ConfigurationManager.ConnectionStrings["Name"].ConnectionString; 

はで理解できません私がしようとすると、C#のコード内でこのように宣言するとき、まったく同じ接続文字列が機能するにもかかわらず...それが失敗した接続を「オープン」する場合と同様に
SqlConnection iData = new SqlConnection(myConnectionString); 

SqlConnection iData = new SqlConnection("Data Source=<desktopname>\\SQLEXPRESS01;Integrated Security=SSPI;Initial Catalog=Database1"); 

誰がどんな考えを持っていますか?

問題は、web.configから文字列に変換され、SqlConnectionまでわかります。

私は、接続文字列として文字列を使用しない限り、特にすべてが完璧に動作します...事前に

ありがとう!

+0

データベースサーバーがありますか? SQLExpressまたはSQLServerですか? – Turrican

+0

SqlConnectionコンストラクタで変数を使用したときに発生するエラーは何ですか? また、定義した変数と使用している変数が同じでないことがわかります。私はあなたのコードではなく、あなたの質問の誤植であることを願っています。 –

+0

例外/エラーが発生しましたか?ここに貼り付けてください。 –

答えて

2

に、コンパイラは、エスケープ文字としてバックスラッシュを扱うので。そして\\は、実行時に使用される実際の文字列で\にコンパイルされます。そうではないXMLで

のWeb.Configであなたは、単一の\を使用する必要がありますので、それは、別のパーサを使用しています。

<add name="Name" connectionString="Data Source=<desktopname>\SQLEXPRESS01;Integrated Security=SSPI;Initial Catalog=Database1"/> 

その上で、あなたもproviderName="System.Data.SqlClient"を追加する必要があります。

<add 
    name="Name" 
    connectionString="Data Source=<desktopname>\SQLEXPRESS01;Integrated Security=SSPI;Initial Catalog=Database1" 
    providerName="System.Data.SqlClient" 
/> 

参考:https://msdn.microsoft.com/en-us/library/bf7sd233(v=vs.85).aspx

+0

'/'は、XMLの "/"記号をエスケープしていませんか? – Tiaan

+0

XMLは、 '/'と '\'の両方をそのまま扱います。他のキャラクターのためにエスケープする必要があります。http://stackoverflow.com/a/1091953/1220550を参照してください。 –

1

てみ追加する:providerNameで=「System.Data.SqlClientのを」あなた「<追加名」バックスラッシュを二重にする必要がありますC#ので

<add name ="Name" connectionString="Data Source=<desktopname>\\SQLEXPRESS01;Integrated Security=SSPI;Initial Catalog=Database1" providerName="System.Data.SqlClient"/> 
+0

私はこれを複数回見つけ、残念ながら私は私のために働かなかった... – Tiaan

関連する問題