2016-04-05 22 views
-2

Başka bir programda kullanmaya çalıştığım bir DLL var. benim dll itibarenStatik readonly değişken DLL başlatılamadı

: benim diğer programdan

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); 
    } 
} 

alıyorum istisna The ConnectionString property has not been initialized. olan bu bazı sorunlara yol açmaktadır parçasıdır.

Bu neden? Nasıl düzgün bir şekilde başlatabilirim? fService sınıfı statik yapılmalı mı (bundan kaçınmak isterim)?

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 

ve bu sorun köken gibi görünüyor nerede:

StackTrace

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(); 
    } 
} 

DÜZENLEME: sen/kapatmak için oy downvote, neden söyle lütfen . Ben tüm bilgileri temin gibiyim ve ben topid izle, ama

+4

'// Bu, connectionString kullanılır.' Ve gerçek yığın izlemesi kodunu gösterir. Aldığınız hata, .NET çalışma zamanı tarafından 'connectionString' üyeniz hakkında konuştuğunuz bir hata, ancak bazı veritabanı bağlantı kodları _not_. – CodeCaster

+0

stacktrace'i gösterir. Kod doğru görünüyor! – Apoorv

cevap

2

Sen fService sınıfının statik üyesi olarak connectionString özellik tanımlamak) = bana başarısız olduğu bana bildirerek yardımcı olun ama bir varible dile kullanmak fStat sınıfında connectionString sınıfı. Bu aynı değişken değil. fService.connectionString öğeleriniz girilmiyor, fStat.connectionString ürününüz yok. Ayrıca SqlConnection'unuzdaki ConnectionString başlatılamıyor, dolayısıyla hata.

+0

özlemek için böyle bir başlangıç, ben zaten utanç verici ^^ hissediyorum, yardım için teşekkürler! –