如何在BETWEEN中使用SQL语句?

时间:2017-02-27 13:00:20

标签: sql .net textbox between

请看我的照片。我有商店。我想在我的商店搜索(过滤)。 “Hrubka是英文”厚度“

这些代码适用于我:

            using (SqlDataAdapter dr = new SqlDataAdapter(" select * from tab_sklad where SMENA LIKE '%" + txt_smena_sklad_filter.Text +
                "%'and DATUM LIKE '%" + txt_datum_sklad_filter.Text +
                "%'and DODAVATEL LIKE '%" + cmb_firma_sklad_filter.Text +
                "%'and CISLO_PALETY LIKE '%" + txt_paleta_sklad_filter.Text +
                "%'and HRUBKA LIKE '%" + txt_hrubka_sklad_filter.Text +
                "%'and KVALITA LIKE '%" + cmb_kvalita_sklad_filter.Text +
                "%'and DRUH LIKE '%" + cmb_druh_sklad_filter.Text +

                "%'", cn))
            {

但我想添加搜索“从”到:列“H”

示例:

之间

从40到50 Image

printscreen mycode

enter image description here enter image description here

2 个答案:

答案 0 :(得分:3)

通常,在构建查询时,应该打印出查询。那么错误可能很明显。

在继续之前,我还想指出你应该使用参数化查询。这与您的问题无关,但这是最佳做法。

你的最后一个条件是:

HRUBKA BETWEEN VALUES'%" + txt_sklad_od.Text "%'AND'% " + txt_sklad_do.Text+"'"

您在比较值中使用百分号,并在不适当的位置使用关键字VALUES。我怀疑你想要某种野性梳理,比如LIKE,但这不是那么有效。对于您当前的查询结构,您将删除百分号:

HRUBKA BETWEEN '" + txt_sklad_od.Text "' AND '" + txt_sklad_do.Text+"'"

答案 1 :(得分:0)

使用@Gordon Linoff回答我希望为您的代码添加更多编辑。

您的代码不是“注射安全”(check SQL Injection here)。我也不明白BETWEEN在这里的使用...... HRUBKA是一个数字字段吗? (Int,float,numeric等)

如果HRUBKA是一个数字,那就像:

double sklad_od = 0, sklad_do = 0;
using (SqlDataAdapter dr = new SqlDataAdapter(" select * from tab_sklad "
        "where SMENA LIKE '%" + String.IsNullOrEmpty(txt_smena_sklad_filter.Text) ? "'" : (txt_smena_sklad_filter.Text.Replace("'", "''") + "%'") +
         " and DATUM LIKE '%" + String.IsNullOrEmpty(txt_datum_sklad_filter.Text) ? "'" : (txt_datum_sklad_filter.Text.Replace("'", "''") + "%'") +
         " and DODAVATEL LIKE '%" + String.IsNullOrEmpty(cmb_firma_sklad_filter.Text) ? "'" : (cmb_firma_sklad_filter.Text.Replace("'", "''") + "%'") +
         " and CISLO_PALETY LIKE '%" + String.IsNullOrEmpty(txt_paleta_sklad_filter.Text) ? "'" : (txt_paleta_sklad_filter.Text.Replace("'", "''") + "%'") +
         " and HRUBKA LIKE '%" + String.IsNullOrEmpty(txt_hrubka_sklad_filter.Text) ? "'" : (txt_hrubka_sklad_filter.Text.Replace("'", "''") + "%'") +
         " and KVALITA LIKE '%" + String.IsNullOrEmpty(cmb_kvalita_sklad_filter.Text) ? "'" : (cmb_kvalita_sklad_filter.Text.Replace("'", "''") + "%'") + 
         " and DRUH LIKE '%" + String.IsNullOrEmpty(cmb_druh_sklad_filter.Text) ? "'" : (cmb_druh_sklad_filter.Text.Replace("'", "''") + "%'") +
         (double.TryParse(txt_sklad_od.Text, out sklad_od) && double.TryParse(txt_sklad_do.Text, out sklad_do) ? (" and HRUBKA BETWEEN " + sklad_od + " AND " + sklad_do) : "") +
         " ", cn))

否则:

using (SqlDataAdapter dr = new SqlDataAdapter(" select * from tab_sklad "
        "where SMENA LIKE '%" + String.IsNullOrEmpty(txt_smena_sklad_filter.Text) ? "'" : (txt_smena_sklad_filter.Text.Replace("'", "''") + "%'") +
         " and DATUM LIKE '%" + String.IsNullOrEmpty(txt_datum_sklad_filter.Text) ? "'" : (txt_datum_sklad_filter.Text.Replace("'", "''") + "%'") +
         " and DODAVATEL LIKE '%" + String.IsNullOrEmpty(cmb_firma_sklad_filter.Text) ? "'" : (cmb_firma_sklad_filter.Text.Replace("'", "''") + "%'") +
         " and CISLO_PALETY LIKE '%" + String.IsNullOrEmpty(txt_paleta_sklad_filter.Text) ? "'" : (txt_paleta_sklad_filter.Text.Replace("'", "''") + "%'") +
         " and HRUBKA LIKE '%" + String.IsNullOrEmpty(txt_hrubka_sklad_filter.Text) ? "'" : (txt_hrubka_sklad_filter.Text.Replace("'", "''") + "%'") +
         " and KVALITA LIKE '%" + String.IsNullOrEmpty(cmb_kvalita_sklad_filter.Text) ? "'" : (cmb_kvalita_sklad_filter.Text.Replace("'", "''") + "%'") + 
         " and DRUH LIKE '%" + String.IsNullOrEmpty(cmb_druh_sklad_filter.Text) ? "'" : (cmb_druh_sklad_filter.Text.Replace("'", "''") + "%'") +
         " and HRUBKA LIKE '%" + String.IsNullOrEmpty(txt_sklad_do.Text) ? "'" : (txt_sklad_do.Text.Replace("'", "''") + "%'") +
         " ", cn))