gpt4 book ai didi

c# - 如何让用户使用c#在mysql数据库中选择特定的列和行来检索数据?

转载 作者:行者123 更新时间:2023-11-29 21:46:25 25 4
gpt4 key购买 nike

在此代码中,我尝试访问 mysql 表(名为:timeslots2)中的一个单元格,其中用户选择列,程序选择行。该表如下所示:

Day      |    11am    |    12pm
----------------------------------
Monday 2 3
Tuesday 3 2
Wednesday 1 3
etc.

即用户选择“11am”,程序检测当前日期(例如:星期一),然后程序返回“2”。

这是我到目前为止所拥有的,但是我对应该写什么来合并用户输入感到困惑。

private void select_btn_Click(object sender, EventArgs e)
{
string today = (System.DateTime.Now.DayOfWeek.ToString());

string constring = "datasource=127.0.0.1;port=3306;username=root2;password=root";
string Query2 = "select * from database.timeslots2 where day= '" + today + "';";
MySqlConnection conDataBase2 = new MySqlConnection(constring);
MySqlCommand cmdDataBase2 = new MySqlCommand(Query2, conDataBase2);

conDataBase2.Open();
}

我还应该提到,有一个名为“shiftLunch”的字符串,用于保存用户选择的特定列(即上午 11 点、中午 12 点等)的输入。有什么想法吗?

最佳答案

如果您将列名存储在组合框中,请注意将 DropDownStyle 设置为 DropDownList。这对于阻止任何在组合框中写入自定义文本的尝试是绝对必要的。列名无法参数化,并且您不应该允许用户键入它们,因为您可能会被 sql 注入(inject)方法攻击

因此,如果您在组合中正确设置了列名称,那么您的代码可以这样编写

private void select_btn_Click(object sender, EventArgs e)
{
string today = (System.DateTime.Now.DayOfWeek.ToString());
string colName = lunchTimes.Text;

string constring = "......";
string Query2 = "select " + colName + " from database.timeslots2 " +
"where day= @day";
using(MySqlConnection conDataBase2 = new MySqlConnection(constring))
using(MySqlCommand cmdDataBase2 = new MySqlCommand(Query2, conDataBase2))
{
conDataBase2.Open();
cmdDataBase2.Parameters.Add("@day", MySqlDbType.VarChar).Value = today;
using(MySqlDataReader reader = cmdDataBase2.ExecuteReader())
{
while(reader.Read())
Console.WriteLine(today + " value is " + reader[0].ToString());
}
}
}

关于c# - 如何让用户使用c#在mysql数据库中选择特定的列和行来检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34072405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com