如何让用户使用c#在mysql数据库中选择特定的列和行来检索数据
本文关键字:数据 检索 选择 用户 数据库 mysql | 更新日期: 2023-09-27 18:25:42
在这段代码中,我试图访问mysql表(名为:timeslots2)中的一个单元格,用户在其中选择列,程序在其中选择行。该表如下所示:
Day | 11am | 12pm
----------------------------------
Monday 2 3
Tuesday 3 2
Wednesday 1 3
etc.
即用户选择"上午11点",程序检测当前日期(例如:星期一),然后程序返回"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注入方法入侵
因此,如果你在组合中正确地设置了列名,那么你的代码就可以用这种方式编写
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());
}
}
}