从SQL返回值到WPF表单-我做对了吗? - c#

我正在使用同一张表(在这种情况下)进行多次计算创建一个表单。该代码可以正常工作,但是我可以在一些指导下确保自己高效地工作:

加载表单时,我只是希望在两个文本块中填充计数。我知道我将需要进行一些错误检查,但是除此之外-这是一个好方法吗?

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风格开发应用程序,那么这种方法还不错,但这只是我的观点。这是我的一些评论:

在这种情况下,我认为最好使用事件Window.ContentRendered,因为在将Loaded作为控件加载时会触发Window事件,而在呈现Window的内容时会触发ContentRendered事件。但是它们之间的最大区别link
您必须将查询字符串单独存储,因为每次我们需要更改它们时,都必须进入函数,这并不方便。
将与SQL Server前缀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一起使用的过程的代价。

WPF-将窗口大小设置为子用户控件大小 - c#

我有一个选项卡控件,该控件动态地填充有包含各种大小的用户控件的选项卡。打开选项卡后,我希望窗口自动调整大小,使其在活动用户控件下有意义。有一种干净的方法可以做到这一点吗?我正在使用标准的mvvm模式。 参考方案 在Window类上使用SizeToContent属性。<Window x:Class="WpfApplication1.MainWi…

Sqlite WHERE子句使用参数 - c#

尝试使用where子句运行特定查询,这就是我所拥有的。//ID is user input could be anything SqliteParameter Identifier = new SqliteParameter ("@ID", ID); string SQLText = "SELECT Email FROM Cli…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

C#WPF-如何始终从文本框中获取当前文本? - c#

我在FileWindow.xaml中有一个TextBox:<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="233,230,0,0" TextWrapping="Wra…