C# 是否可以从sql server筛选数据

C# 是否可以从sql server筛选数据,c#,sql-server,C#,Sql Server,我正在尝试为一家银行制作一个显示其信用/借记的应用程序,但当我在文本框中过滤它时,找不到数据! 希望你能帮助我 string filter = ""; string command = "SELECT * FROM Movimentos WHERE [Tipo de Movimento] IN('Crédito')"; if (textTipodeMovimento.Text != "") { filter

我正在尝试为一家银行制作一个显示其信用/借记的应用程序,但当我在文本框中过滤它时,找不到数据! 希望你能帮助我

        string filter = "";
        string command = "SELECT * FROM Movimentos WHERE [Tipo de Movimento] IN('Crédito')";

        if (textTipodeMovimento.Text != "")
        {
            filter = filter + "[Tipo de Movimento] LIKE  '%" + textTipodeMovimento.Text + "%'AND";
        }

        if (filter.Length > 0)
        {
            Sqldata.DataSource = SqlDataSource1;
            string FinalFilter = filter.Remove(filter.Length - 3);
            SqlDataSource1.SelectCommand = command + FinalFilter;
            Sqldata.DataBind();
        }
        else
        {
            Sqldata.DataBind();
        }

    }

如果只更正代码,则如下所示:

    string command = "SELECT * FROM Movimentos WHERE [Tipo de Movimento]  = 'Crédito'"; // no need to use IN statement if there is only a check for 1 value

    if (textTipodeMovimento.Text != "")
    {
        command += String.Format(" AND lower([Tipo de Movimento]) LIKE  '%{0}%'", textTipodeMovimento.Text.ToLower());
    }

    Sqldata.DataBind();

我正试图为一家银行做一个应用程序,而你却在做一个完全可以注入的应用程序?在你需要修复之前。在开始制作应用程序之前,尤其是对于类似的应用程序,您需要了解安全性等方面的知识;这在每个应用程序中都是至关重要的,如果您的应用程序导致他们的钱被偷或他们的个人信息被泄露,人们会非常不安。@Larnu只是一个测试,没有确定的结果!我就是搞不懂,因为我正在尝试过滤一些数据,当我过滤信用/借记时,它会出现,但当我过滤任何它没有出现的值时,我的目标是用户只能看到信用而不能看到借记然后参数化你的查询;否则,用户现在就可以看到他们想要什么。测试并不意味着你可以使用糟糕的编码实践或创建巨大的安全漏洞。@Larnu我已经在C语言中工作了大约一周,我不知道这门语言的一切,我在这里找到了一些帮助。。。我怎么能这么做?你要的是。SQL命令的参数化非常重要。如果你不熟悉它,我建议你读一读。这根本不能解决注射问题。还有,你为什么要对[Tipo de Movimento]列应用LOWER?这可能会对性能产生重大影响。我不是这里回答@DiogoPeixoto:@Larnu的人,我在搜索数据时使用了ToLower方法忽略大小写。因此,它将显示包含“Test”和“Test”以及“Test”的所有行,例如,您如何知道OP正在使用区分大小写的排序规则?他们没有提到他们是;无论哪种方式,性能都会受到影响。这让我回到我的问题上来,@Kharatbek:你怎么知道OP使用的是区分大小写的排序规则?。他们没有提到他们是,那么你从哪里得到这些额外的洞察力呢?