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

时间:2015-12-03 17:25:58

标签: c# mysql

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

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

即。用户选择" 11 am",程序检测到当天(例如:星期一),然后程序返回" 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点等)。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您将列名存储在组合框中,请注意将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());
     }
  }
}