var connection = ConnectionFactory.GetConnection(
ConfigurationManager.ConnectionStrings["Test"]
.ConnectionString, DataBaseProvider);
そしてこれは私のApp.configです:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="Test" connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
しかし、私のプロジェクトを実行すると、これが私のエラーです。
オブジェクト参照がオブジェクトインスタンスに設定されていません。
次のことはできません。
var connection =
System.Configuration.ConfigurationManager.
ConnectionStrings["Test"].ConnectionString;
あなたのアセンブリはまたSystem.Configuration.dll
への参照を必要とします
これは非常によくある質問なので、4つの簡単なステップで簡単に従うことができるように、Visual Studioからスクリーンショットをいくつか用意しました。
string str = Properties.Settings.Default.myConnectionString;
また、あなたの参照の下にSystem.Configuration
dllが含まれていることを確認してください。それがないと、System.Configuration名前空間のConfigurationManager
クラスにアクセスできません。
最初にあなたのページにSystem.Configuration
の参照を追加してください。
using System.Configuration;
それからあなたの app.config に従って、以下のように接続文字列を取得します。
string conStr = ConfigurationManager.ConnectionStrings["Test"].ToString();
これで接続文字列が手に入り、使用できるようになりました。
//Get Connection from web.config file
public static OdbcConnection getConnection()
{
OdbcConnection con = new OdbcConnection();
con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["con"].ConnectionString;
return con;
}
これを試してみる
string abc = ConfigurationManager.ConnectionStrings["CharityManagement"].ConnectionString;
1)新しいフォームを作成してこれを追加します。
Imports System.Configuration
Imports Operaciones.My.MySettings
Public NotInheritable Class frmconexion
Private Shared _cnx As String
Public Shared Property ConexionMySQL() As String
Get
Return My.MySettings.Default.conexionbd
End Get
Private Set(ByVal value As String)
_cnx = value
End Set
End Property
End Class
あなたが接続を使用したいときには、ウル形式でこれを行います。
Private Sub frmInsert_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cn As New MySqlConnection(frmconexion.ConexionMySQL)
cn.open()
以上です。あなたはDBに接続され、何かをすることができます。
これはvb.net用ですが、論理は同じです。
私は同じ問題を抱えていました。私のソリューションは2つのプロジェクトから構築されました。クラスライブラリプロジェクトを参照するClass library
およびWebサイト。問題は、私が私のApp.config
プロジェクトでClass library
にアクセスしようとしていたのに、システムがウェブサイトのWeb.config
を検索していたことです。接続文字列をWeb.config
の中に入れて...問題は解決しました。
主な理由は、ConfigurationManager
が別のアセンブリで使用されていたにもかかわらず、runnigプロジェクト内で検索していたことです。
やってみました:
var connection = new ConnectionFactory().GetConnection(
ConfigurationManager.ConnectionStrings["Test"]
.ConnectionString, DataBaseProvider);
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;
あなたは以下のコードを使用して接続文字列を取得することができます -
using System; using System.Configuration;
var connectionString=ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
これが参照です: App.configからの接続文字列
これは私のために働いた:
string connection = System.Configuration.ConfigurationManager.ConnectionStrings["Test"].ConnectionString;
出力:
データソース= .;初期カタログ= OmidPayamak; IntegratedSecurity = True "
問題は参照ではないようです、connectionsStringをnullにしているので、実行中のプロジェクトのconfigファイルに値を追加したことを確認してください。つまり、最初に起動/実行されるメインプログラム/ライブラリです。
まずあなたのプロジェクトにSystem.Configuration
参照を追加し、それから接続文字列を取得するために以下のコードを使用しなければなりません。
_connectionString = ConfigurationManager.ConnectionStrings["MYSQLConnection"].ConnectionString.ToString();
この質問のOPがdll内でApp.Configを使用しようとしている可能性があります。
この場合、コードは実際にはdllではなく、実行可能ファイルのApp.Configにアクセスしようとしています。名前が見つからないため、Nullが返されます。したがって、例外が表示されます。
次の投稿が役に立つかもしれません: DLLのapp.configからのConnectionStringはnull
私はインデックスを使って文字列を読み、一つずつチェックすることで問題を解決しました。名前を使用して読み取ると、まだ同じエラーが発生します。
C#ウィンドウアプリケーションを開発するときに問題がありますが、asp.netアプリケーションには問題はありません。設定には正しくないものがあるはずです。
System.Configuration
ライブラリを参照しましたが、同じエラーが発生しました。デバッグファイルにはapp.configがありませんでした。このファイルを手動で作成してください。エラーは、私はデバッグフォルダ内のファイル "appname.exe.config"をコピーすることでこれを解決した。 IDEはファイルを作成しませんでした。