我已经在我的 SQL 数据库和 WPF 应用程序之间创建了一个连接,但我想使用 XML 文件和 XDocument 来连接它们

Posted

技术标签:

【中文标题】我已经在我的 SQL 数据库和 WPF 应用程序之间创建了一个连接,但我想使用 XML 文件和 XDocument 来连接它们【英文标题】:I've created a connection between my SQL database and a WPF App but i want use an XML file and XDocument to connect them 【发布时间】:2021-08-29 19:18:07 【问题描述】:

首先,我创建了一个 WPF 应用程序和一个 SQL 数据库并成功解析/连接了它们,但我的组织希望我使用从数据库连接到应用程序的连接 XML。(最好使用.System.XML.Linq) 我对其进行了硬编码,我基本上想用 XML 连接替换我的硬编码连接

我的 XML 的名称是 Connection.XML。 XML 文件的结构是这样的。主要标签包含标签中的连接字符串。它们下面是

中的数据库名

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>Data Source=LAPTOP-ONETG0O\SQLEXPRESS; Initial Catalog = Login; Integrated Security = true;</connectionStrings> 
<DataSource>Login</DataSource> 
</configuration>

这个应用程序

公共部分类 LoginScreen : Window

    public LoginScreen()
    
        InitializeComponent();
        
    


    

    private void btn_Click(object sender, RoutedEventArgs e)
    

        SqlConnection sqlCon = new SqlConnection(@"Data Source=LAPTOP-ONETG0O\SQLEXPRESS; Initial Catalog = Login; Integrated Security = true");
        try
        
            if (sqlCon.State == ConnectionState.Closed)
                sqlCon.Open();
            String query = "SELECT COUNT(1) FROM tblUSER WHERE Username=@UserName AND Password=@Password";
            SqlCommand sqlCmd = new SqlCommand(query, sqlCon);
            sqlCmd.CommandType = CommandType.Text;
            sqlCmd.Parameters.AddWithValue("@Username", txtUserName.Text);
            sqlCmd.Parameters.AddWithValue("@Password", txtPassWord.Password);
            int count = Convert.ToInt32(sqlCmd.ExecuteScalar());

            if (count == 1)
            
                MainWindow dashboard = new MainWindow();
                dashboard.Show();
                this.Close();
            
            else
            
                MessageBox.Show("Username or password is incorrect");
            
        
        catch (Exception ex)
        
            MessageBox.Show(ex.Message);
        

        finally  sqlCon.Close(); 
    
    
       
    

【问题讨论】:

您可以存储连接字符串和您的设置文件(项目属性)。您应该使用using 块来处理连接和命令对象。我希望您没有存储纯文本密码.... 请在您的问题中添加实际的 XML 文件 【参考方案1】:

正如@Charlieface 提到的,连接通常在应用程序的配置 XML 文件中处理。在这里查看:App.Config: Basics and Best Practices

返回到您自定义的 XML 文件。通过 LINQ to XML 很简单。

XML 文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <connectionStrings>Data Source=LAPTOP-ONETG0O\SQLEXPRESS; Initial Catalog = Login; Integrated Security = true;</connectionStrings>
    <DataSource>Login</DataSource>
</configuration>

c#

void Main()

    const string FILENAME = @"e:\Temp\Connection.xml";

    XDocument xdoc = XDocument.Load(FILENAME);
    string conn = xdoc.Descendants("connectionStrings").FirstOrDefault().Value;
    
    Console.WriteLine("ConnectionString: 0", conn);

输出

ConnectionString: Data Source=LAPTOP-ONETG0O\SQLEXPRESS; Initial Catalog = Login; Integrated Security = true;

【讨论】:

以上是关于我已经在我的 SQL 数据库和 WPF 应用程序之间创建了一个连接,但我想使用 XML 文件和 XDocument 来连接它们的主要内容,如果未能解决你的问题,请参考以下文章

在 WPF 应用程序中连接和使用 SQL Compact Edition

如何让即插即用的 WPF 应用程序创建 SQL 数据库? [关闭]

使用 WPF 数据网格更新 SQL 数据库表

如何通知我的 WPF 应用程序我的 SQL 查询在插入数据库时​​跳过了重复的行?

如何调整/控制已经实现和发布的 WPF 应用程序的高度

无法从网络上的 PC 访问我的 WPF 应用程序中的数据库(.mdf 文件)