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。