如何修复“ConnectionString 属性尚未初始化”

Posted

技术标签:

【中文标题】如何修复“ConnectionString 属性尚未初始化”【英文标题】:How to fix “The ConnectionString property has not been initialized” 【发布时间】:2021-06-23 07:17:03 【问题描述】:

大家好,我有一个关于这个方法的错误,我使用连接字符串一个 xml 文件。当我运行代码时,第一行是我的 xml 文件,它不是 工作我认为这段代码是正确的,但我找不到错误在哪里

这是连接字符串


    <?xml version="1.0" encoding="utf-8" ?>
 
   <conn>
     <Dbconn>
     <cstring>Server=DESKTOP-DSGBABB;Trusted_Connection=True ;database=master</cstring>
     </Dbconn>
  </conn> 

这是我的代码

 private void materialFlatButton1_Click(object sender, EventArgs e)
            
                CreateDB();
                   
    
     public void CreateDB()
            
                XmlTextReader reader = null;
                reader = new XmlTextReader(filename);
    
    
                reader.WhitespaceHandling = WhitespaceHandling.None;
                while (reader.Read())
                
                    if (reader.NodeType == XmlNodeType.Element)
                    
                        if (reader.Name == "cstring")
                        
                            conn = reader.ReadString();
                        
                     
    
                    using (connection = new SqlConnection(conn))
                    
                        if (connection.State != ConnectionState.Open)
                        
    
                            connection.Open();
                        
                        str = "CREATE DATABASE uc ON PRIMARY " +
                        "(NAME = uc, " +
                       "FILENAME = 'C:\\uc.mdf', " +
                        "SIZE = 3MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
                       "LOG ON (NAME = uc_Log, " +
                        "FILENAME = 'C:\\uc.ldf', " +
                        "SIZE = 1MB, " +
                        "MAXSIZE = 5MB, " +
                        "FILEGROWTH = 10%)";
                         
                        connection.Close();
                        SqlCommand myCommand = new SqlCommand(str, connection);
                        try
                        
                            connection.Open();
                            myCommand.ExecuteNonQuery();
                            MessageBox.Show("Veritabanı Başarıyla Oluşturuldu");
    
                            connection.Close();
                        
                        catch (System.Exception ex)
                        
                            lbls.Text = @"Error occured. 
                      + " + ex.Message.ToString();
                        
                        connection.Close();
                    
                
    
            

我将等待您的帮助

【问题讨论】:

到目前为止你尝试过什么?你试过调试吗?或者将一些值写入控制台?从 XML 中读取 conn 后发送到 SqlConnection 之前的值是多少? 是的,我尝试调试但我找不到。我没有写入任何值我尝试创建新数据库。 我建议您调试并仔细查看conn 变量。 【参考方案1】:

请尝试如下更改您的连接字符串:

Data Source=DESKTOP-DSGBABB;Initial Catalog=master;Integrated Security=True;

所以 XML 将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<conn>
    <Dbconn>
        <cstring>Data Source=DESKTOP-DSGBABB;Initial Catalog=master;Integrated Security=True;</cstring>
    </Dbconn>
</conn>

在处理 XML 时使用 LINQ to XML API 会容易得多。

这是从 XML 文件中检索连接字符串的方法。

此外,SqlConnectionStringBuilder 类型将验证连接字符串的正确性。

c#

void Main()

    const string configFile = @"e:\Temp\configXMLFile.xml";
    XDocument xdoc = XDocument.Load(configFile);
        
    SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
    builder.ConnectionString = xdoc.Descendants("Dbconn").Elements("cstring").FirstOrDefault().Value;
    using (connection = new SqlConnection(conn))
    
        ...
    

【讨论】:

感谢您的回答。我修好了它。这是一个非常不同的错误。它没有读取 conn 字符串。我做了一个不同的方式。

以上是关于如何修复“ConnectionString 属性尚未初始化”的主要内容,如果未能解决你的问题,请参考以下文章

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复AppScan漏洞

如何在DOS环境下修复系统