2016-04-26 104 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(); 
      } 
相关问题