0

此搜索代码是否具有以下任何日期格式?捕捉日期格式“dd-MM-yyyy”。我的桌子是:

id |   dat    | user | remain
-----------------
1 | 01-03-2013 | x | 1000
----------------
2 | 01-03-2013 | x | 1200
----------------
3 | 02-03-2013 | y | 1100
----------------
4 | 02-03-2013 | y | 1300
----------------
5 | 03-03-2013 | z | 1200
----------------
6 | 03-03-2013 | z | 1400
-------------------------

private void textBox10_Leave(object sender, EventArgs e)
    {
        if ((textBox10.Text == "yyyy/MM/dd") || (textBox10.Text == "dd/MM/yyyy") || (textBox10.Text == "yyyy-MM-dd"))
        {
            textBox10.Text = "dd-MM-yyyy";
            using (SqlConnection cn = new SqlConnection(Class1.x))
            {
                cn.Open();
                string cm = "select id from item_treasury where dat='" + textBox10.Text + "' order by id";
                using (SqlCommand cmd = new SqlCommand(cm, cn))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        while (dr.Read() == true)
                        {
                            if (dr.HasRows == false)
                            {
                                MessageBox.Show("xxxxxxxxxxxxxxxxxxxx");
                                this.Close();
                            }
                            comboBox1.Items.Add(dr[0].ToString());
                        }
                    }
                }
            }
        }
    }

我想更正这段代码。请帮助我!

4

2 回答 2

0

谢谢大家,我最后的正确代码:

DateTime date;
        string[] formats = { "dd/MM/yyyy", "dd-MM-yyyy", "d/MM/yyyy", "d-MM-yyyy", "yyyy/MM/dd", "yyyy-MM-dd", "yyyy/M/dd", "yyyy-M-dd", "dd/M/yyyy", "dd-M-yyyy" }; //////////if (DateTime.TryParse(textBox10.Text, null, System.Globalization.DateTimeStyles.None, out date))
        if (DateTime.TryParseExact(textBox10.Text, formats, System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
        {
            using (SqlConnection cn = new SqlConnection(Class1.x))
            {
                cn.Open();
                string cm = "select id from item_treasury where dat='" + date.ToString("yyyy-MM-dd") + "' order by id";
                ///////////****
                using (SqlCommand cmd = new SqlCommand(cm, cn))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        while (dr.Read() == true)
                        {
                            if (dr.HasRows == false)
                            {
                                MessageBox.Show("xxxxxxxxxxxxxxxxxx");
                                this.Close();
                            }
                            comboBox1.Items.Add(dr[0].ToString());
                        }
                    }
                }
            }
        }
于 2013-03-18T15:51:30.547 回答
0

我认为您的文本框中有一个日期,例如 2012 年 12 月 31 日,因此您确实希望将其作为日期,并且您使用该日期进行 sql 查询。此时您只需在 TextBox 中查找格式字符串。

DateTime date;
if (DateTime.TryParse(textBox10.Text, (... date formats in string array), null, null, out date)
{
    ....
         string cm = "select id from item_treasury where dat='" + date.ToString("dd-MM-yyyy") + "' order by id";
    ....
}

最好将日期保存为数据库中的日期,并使用参数化查询来检索数据。

于 2013-03-13T09:49:28.707 回答