C# 将值从SQL返回到WPF表单-我这样做是否正确?

C# 将值从SQL返回到WPF表单-我这样做是否正确?,c#,wpf,sqlite,C#,Wpf,Sqlite,我正在创建一个表单,其中包含来自同一个表的多个计算(在本例中)。代码运行良好,但我可以提供一些指导,以确保我的工作效率: 当表单加载时,我只想用计数填充两个文本块。我知道我需要进行一些错误检查,但除此之外,这是一种好的方法吗 private void Window_Loaded(object sender, RoutedEventArgs e) { int intCount = ReturnNumber("SELECT COUNT(ActivityID) FROM tblActivity

我正在创建一个表单,其中包含来自同一个表的多个计算(在本例中)。代码运行良好,但我可以提供一些指导,以确保我的工作效率:

当表单加载时,我只想用计数填充两个文本块。我知道我需要进行一些错误检查,但除此之外,这是一种好的方法吗

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    int intCount = ReturnNumber("SELECT COUNT(ActivityID) FROM tblActivity WHERE [Activity_Category] = 'Productivity'");
    TxtBlockProductivityPerc.Text = intCount.ToString();

    intCount = ReturnNumber("SELECT COUNT(ActivityID) FROM tblActivity WHERE [Activity_Category] = 'Revenue'");
    TxtBlockRevenuePerc.Text = intCount.ToString();    
}

public int ReturnNumber(string StrQuery)
{
    string cs = ClsVariables.StrDb;
    string cmdText = StrQuery;
    using (SQLiteConnection con = new SQLiteConnection(cs))
    using (SQLiteCommand cmd = new SQLiteCommand(cmdText, con))
    {
        con.Open();
        int count = Convert.ToInt32(cmd.ExecuteScalar());
        con.close();
        return count;
    }
}

基本上,如果您不是以MVVM风格开发应用程序,这种方法也不错,但这只是我的观点。以下是我的几点评论:

  • 在这种情况下,我认为最好使用event,因为event是在加载
    窗口
    作为控件时触发的,ContentRendered事件是在呈现
    窗口
    的内容时触发的。但是他们之间没有大的区别

  • 您必须单独存储查询字符串,因为每次我们需要更改它们时,您都必须进入您的函数,这很不方便

  • 添加到SQL server prefix
    FromSQL
    的函数中,在您的情况下会是这样的:
    ReturnNumberFromSQL()

  • 您不需要临时变量,可以调用函数并立即从中获得结果

我的伪示例:

private void Window_ContentRendered(object sender, EventArgs e)
{
    string Test1Sql = "Test1 SQL query"; // stored separately
    string Test2Sql = "Test2 SQL query"; // stored separately

    MyTextBlock1.Text = ReturnNumberFromSQL(Test1Sql).ToString();
    MyTextBlock2.Text = ReturnNumberFromSQL(Test2Sql).ToString();
}

public int ReturnNumberFromSQL(string StrQuery)
{
    return 777;
}

并且考虑一下将不能与GUI一起工作的过程单独存储在适当的类中的开销。

谢谢你,安纳托利-这很有意义。我对C#/WPF还很陌生,确实想开始使用MVVM——但每次我看到一段视频/一本书——我都会很快(目前)感到自己的深度不够。@AndyDB:我认为向MVVM的过渡不应该是自发的,程序员必须为此而成熟。学习原则和OOP原则,将更容易理解其他模式,尤其是MVVM。