如何在 C# 上使用数据库数据获取组合框上的范围值
Posted
技术标签:
【中文标题】如何在 C# 上使用数据库数据获取组合框上的范围值【英文标题】:How to Get Range Values on a comboBox with a Database Data on C# 【发布时间】:2021-02-23 03:23:51 【问题描述】:不确定我上面的问题是否写得正确,如果没有,我深表歉意。
我有一个学生数据库,这些学生在不同的班级项目、作业等方面有不同的成绩。我的职责是当我从我的组合框中选择一个项目时,它应该填充所选范围内的学生。例如,组合框上的文本如下:
从0到10 从 11 点到 20 点 从 21 到 30 从 31 到 40如果我选择From 11 to 20
,我应该得到从11 to 20
获得成绩的学生。
现在,这是一个学校作业,所以我必须使用这些课本;我无法将它们更改为 0、10、20 等。
我在 Access 上连接到我的数据库。我有另一个更简单的组合框,意思是组合框项目显示为:作业 1、作业 2 等,并且该连接有效。我的问题是试图告诉 C# 我选择的内容已翻译为文本中的范围。这是该按钮的代码:
private void btnLoad_Click(object sender, EventArgs e)
String homeWork = cboHomeWork.Text; //This works fine and it filters correctly
String range = cboRangeGrades.Text; //This will return an error because the text is complexed
String sqlFilter = String.Format("Select * from activities where HomeWork = '0' and range = '1' ", homeWork, range);
getStudents(sqlFilter); //Calling the SQL instructions from above
对于使用这些范围从数据库中获取范围数据的正确方法有什么建议?
我也尝试过使用if
语句:
private void btnLoad_Click(object sender, EventArgs e)
String homeWork = cboHomeWork.Text; //This works fine and it filters correctly
String range = cboRangeGrades.Text; //This will return an error because the text is complexed
if (cboRangeGrades.Text == "From 0 to 10")
//But this will return an error saying that the criteria is not correct.
range = String sqlFilter = String.Format("Select * from activities where range = 10");
//To my understanding, that Query is not written correctly even though on Access it works.
String sqlFilter = String.Format("Select * from activities where HomeWork = '0' and range = '1' ", homeWork, range);
getStudents(sqlFilter); //Calling the SQL instructions from above
谢谢!
【问题讨论】:
第二个应该可以工作,但是您在最后一个中再次为 sqlfilter 放置了相同的文本。您有多种获取数据的选项。但要做到这一点,我们需要更多细节。你能用更多细节更新你的问题吗?诸如这些变量值包含的内容、您在数据库中拥有它以及您希望如何在 UI 中显示等详细信息会有所帮助。 如何在数据库中存储范围值? @JackLe - 提供数据库。我所要做的就是连接到它,创建一个带有组合框和数据网格视图的 UI 软件,我将在其中填充信息。此数据网格视图具有列:Date, Student, Homework, Grades
,与 Access 数据库中的列相同。
@AdrianAcostaPR 你不明白我的问题。如果 [range] 列是整数,可以使用BETWEEN value1 AND value2
@AdrianAcostaPR 你可以像我上面提到的那样做,或者将你的查询更改为[range] >= value1 and value2 <=[range]
。您可以轻松地从所选文本中提取数字(例如从 31 到 40),有多种不同的方法。
【参考方案1】:
你可以使用Replace()
:
string homeWork = "Assignment 1";
string range = "From 11 To 20";
string criteria = range.Replace("From", "between").Replace("To", "and");
String sqlFilter = String.Format("select * from activities where HomeWork = '0' and grade 1", homeWork, criteria);
Console.WriteLine(sqlFilter);
// select * from activities where HomeWork = 'Assignment 1' and Grade between 11 and 20
【讨论】:
以上是关于如何在 C# 上使用数据库数据获取组合框上的范围值的主要内容,如果未能解决你的问题,请参考以下文章