簡體   English   中英

在執行Form_Load之前如何讀取Xml文件?

[英]How to read Xml file before execute Form_Load?

我有一個C#應用程序,並使用xml文件將連接字符串設置為sql數據庫。 數據庫用表適配器填充datagridviews。 我希望在填充datagridview之前設置連接字符串,因為我有一個DataGridView的CellValueChanged事件。

我現在代表From_Load的代碼是:

xmldoc.Load("D:\\XML\\paths.xml");
            XmlNode node = xmldoc.DocumentElement.SelectSingleNode("/paths/sqlconnection");
            sqlconnect = node.InnerText;
            cn = new SqlCeConnection("Data Source=" + sqlconnect);


            // TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Raum". Sie können sie bei Bedarf verschieben oder entfernen.
            this.raumTableAdapter1.Fill(this.database1DataSet.Raum);
            // TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Firma". Sie können sie bei Bedarf verschieben oder entfernen.
            this.firmaTableAdapter1.Fill(this.database1DataSet.Firma);
            // TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Kunde". Sie können sie bei Bedarf verschieben oder entfernen.
            this.kundeTableAdapter1.Fill(this.database1DataSet.Kunde);
            // TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Ansprechperson". Sie können sie bei Bedarf verschieben oder entfernen.
            this.ansprechpersonTableAdapter1.Fill(this.database1DataSet.Ansprechperson);

但是在CellValueChanged時出現一個未設置連接字符串的錯誤。

我的XML文件的設置如下:

<?xml version="1.0" encoding="UTF-8"?>
- <paths>
    <sqlconnection>D:\\BDTWelcome - Kopie 2.0 fixed\\BDTWelcome\\Database1.sdf</sqlconnection>
    <ExcelVorlagen>D:\\BröExcelVorlagen</ExcelVorlagen>
  </paths>

如果您能告訴我我的錯誤在哪里,那就太好了。

轉到winfows窗體項目的Programm.cs文件。 它看起來像:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

相關部分是Main()的最后一行。 在這里創建表格。 您需要在調用表單的構造函數之前加載XML文件。 可能的代碼如下所示:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    xmldoc.Load("D:\\XML\\paths.xml");
        XmlNode node = xmldoc.DocumentElement.SelectSingleNode("/paths/sqlconnection");
        sqlconnect = node.InnerText;
        cn = new SqlCeConnection("Data Source=" + sqlconnect);

    Application.Run(new Form1(XmlNode));
}

通過其構造函數將加載的XmlNode(或任何您想要的)傳遞給表單。 因此,您必須在Form1.designer.cs文件中添加一個構造函數並處理傳遞的數據。

我有一個程序幾乎在做。 我這樣建立連接:

/// <summary>
    /// Datenbank wird geöffnet.
    /// </summary>
    /// <param name="sCon">Verbindungsstring.</param>
    /// <returns>Erfolgreich?</returns>
    public bool OpenDBConnect(string sCon)
    {
        bool bOK = false;

        try
        {
            _conn = new SqlConnection(sCon);
            _sConn = sCon;
            _conn.Open();
            bOK = true;
        }
        catch (Exception ex)
        {
            _Logger.Log(Properties.EnglishStringResource.ConnectionFailed + ex.Message);                
            bOK = false;
        }
        return bOK;
    }


之后,您必須告訴數據集當然要使用此連接,否則數據集中將沒有數據,並且會出現錯誤,即未為數據集設置連接字符串! 它想更改網格中的數據(因為可能是您將其綁定到網格),但是由於缺少連接而無法獲取任何數據。

可以通過以下方式設置設計師設計的數據集的連接字符串:

[ApplicationNamespace].Properties.Settings.Default["ConnectionString"] = newconstr;

對我有用的解決方案是簡單地創建一個函數,該函數讀取xlm文件並在首次使用連接字符串之前設置連接字符串。

public void readconnectionstring()
        {
            xmldoc.Load("D:\\XML\\paths.xml");
            XmlNode node = xmldoc.DocumentElement.SelectSingleNode("/paths/sqlconnection");
            sqlconnect = node.InnerText;
            cn = new SqlCeConnection("Data Source=" + sqlconnect);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM