2016-04-26 297 views
1

我遇到問題。我無法解決與ConnectionString屬性尚未初始化的問題。問題出在這個方法上:需要幫助(ConnectionString屬性尚未初始化)

try 
     { 
      using (SqlConnection connection = new SqlConnection(connectionString)) 
      { 
       connection.Open(); 
       using (SqlCommand cmd = new SqlCommand()) 
       { 
        using (TransactionScope ts = new TransactionScope()) 
        { 
         products.Update(dataSet, "Produktai"); 
         offers.Update(dataSet, "Pasiulimai"); 
         ts.Complete(); 
        } 
       } 
       connection.Close(); 
      } 
     } 
     catch 
     { } 

在類的構造函數中我已經有了一個SqlDataAdapter和SqlCommandBuilder的聲明。我的連接字符串是在App.config中,它看起來是這樣的:

<connectionStrings> 
<add name="connectionString" connectionString="server=ANDREW-PC\LTSMSQL;database=MarketDB; Integrated Security=true;" providerName="System.Data.SqlClient" /> 

在我的節目我已經分配了此連接字符串參數字符串變量。這裏是一個代碼示例:

private string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString; 

任何想法如何解決此錯誤?

+2

您從不在您的SqlCommand對象上設置Connection屬性。我相信你也可以將它傳遞給構造函數。這就是您收到錯誤的原因。 – ohiodoug

+0

我不知道該代碼應該如何工作。首先創建一個連接,然後打開它。然後創建一個SqlCommand對象,但不要將連接與它關聯。但是,您從來不會在任何可以看到的位置使用該SqlCommand對象。 –

+0

添加到@ChrisDunaway所說的內容,目前還不清楚您在TransactionScope中做什麼以及產品或優惠來自哪裏。 –

回答

0

好的,我剛發現這個問題。由於某些原因,當我連接Visual Studio時,我的數據庫對我來說是「只讀」的。我改變了數據庫中的一些設置,現在它工作正常。感謝您的回答。 :)

1

該命令未分配給連接。你需要像這樣使用sqlcommand構造函數:new SQLCommand(connection, "querystring")。我還建議你使用更新的技術,如ORM。我使用基本的ADO.NET數據訪問之前,我發現流利的NHibernate,和流利是更容易使用:-)

+0

感謝您爲我提供新技術,但我必須做這項工作使用這個東西爲我的研究。我不喜歡它。我不認爲有必要更改SQLCommand連接,因爲我之前沒有任何連接使用它,它對我來說非常合適。 (我用它從我的數據庫中讀取信息到數據集,同一個項目中。) – Andrius

+0

@Andrius我看到,這有點不尋常,他讓你使用ADO.NET SQL,因爲它現在既簡單又非常多餘。 – RhysO

0

你爲什麼使用System.Transaction.TransactionScope?您是否正在處理多個事務感知數據源,如sql server和oracle,您需要一個事務管理器來協調事務?如果沒有,那你爲什麼不從連接創建一個事務?

using (var connection = new System.Data.SqlClient.SqlConnection(" ")) 
      { 
       connection.Open(); 
       var tran = connection.BeginTransaction(); 

       var cmd = new System.Data.SqlClient.SqlCommand(); 
       cmd.Connection = connection; 
       cmd.Transaction = tran; 


       //I dont know how the sql command relates to this 
       products.Update(dataSet, "Produktai"); 
       offers.Update(dataSet, "Pasiulimai"); 

       //commit 
       tran.Commit(); 
      } 
相關問題