別のプログラムで使用しようとしているDLLがあります。私のDLLから静的読み取り専用変数がDLLで初期化されていません
:これはいくつかの問題が発生する部分である
public class fService
{
public static readonly string connectionString = "My connection string";
...
etc
...
public static void myStaticMethod()
{
fStat x = new fStat();
}
}
私の他のプログラムから:
private void btnSave_Click(object sender, EventArgs e)
{
try
{
fService.myStaticMethod();
MessageBox.Show("Success!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
私が手に例外がThe ConnectionString property has not been initialized.
です。
これはなぜですか?正しく初期化するにはどうすればよいですか?クラスfServiceは静的にする必要があります(私はそれを避けたいですか?)
のStackTrace:
at System.Data.SqlClient.SqlConnection.PermissionDemand()
at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at fManager.tableClasses.fStats..ctor() in e:\fManager\project\fManager\ConsoleApplication1\tableClasses\fStats.cs:line 55
at fManager.fService.constructElement(String header, String content, fService& service) in e:\fManager\project\fManager\ConsoleApplication1\fService.cs:line 964
at fManager.fService.LoadIni(String path) in e:\fManager\project\fManager\ConsoleApplication1\fService.cs:line 675
at fManagerF.mainForm.btnSave_Click(Object sender, EventArgs e) in e:\fManager\exeProject\fManagerF\fManager\mainForm.cs:line 54
と問題が発生するように見える場所です:
public fStat()
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("fManager.getfStats", conn);
SqlCommand cmdCount = new SqlCommand("SELECT COUNT(*) FROM [fManager].[fStats]", conn);
_id = 0;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
conn.Open();
_id = (int)cmdCount.ExecuteScalar();
cmd.ExecuteNonQuery();
conn.Close();
}
}
EDIT:あなたがクローズする/投票をdownvote場合は、その理由を教えてください。
「// this is the connectionString is used。」のコードと実際のスタックトレースを表示します。あなたが得ているエラーは、.NETランタイムが 'connectionString'メンバーについて話すエラーではなく、いくつかのデータベース接続コードです。 – CodeCaster
はスタックトレースを表示します。コードは正しく見えます! – Apoorv