SqlCommand参数不起作用

 faerbersitko 发布于 2023-02-13 11:28

当我在SSMS中执行以下命令时,我得到了我期望的结果 -

SELECT *
FROM [Event]
WHERE Active = 'True'
AND [Name] LIKE '%P%'

即显示名称包含P的所有事件

但是,当我在用C#编写的WinForms应用程序中构建此命令时,我总是得到一个空的数据表.

我使用以下代码 -

string sqlText = "SELECT * " +
                 "FROM Event " +
                 "WHERE Active = @Active";
SqlCommand sqlCom = new SqlCommand();
sqlCom.Parameters.Add("@Active", SqlDbType.Bit).Value = active;
if (txtSearchName.Text != null && txtSearchName.Text.Length > 0)
{
    sqlText += " AND [Name] LIKE '@Name'";
    string value = "%" + txtSearchName.Text + "%";
    sqlCom.Parameters.Add("@Name", SqlDbType.VarChar).Value = value;
}
sqlText += " ORDER BY [Date] DESC;";
sqlCom.CommandText = sqlText;
DataTable table = Express.GetTable(sqlCom);
DataView view = new DataView(table);
DataTable show = view.ToTable(true, "ID", "Date", "Name");
dataEventsFound.DataSource = show;

请注意Express.GetTable是一种简单地添加SQLConnection并使用DataReader填充和返回DataTable的方法.我不相信错误在于Method,因为它在我编写的这个和其他应用程序中被使用了数百次.

我认为错误与命令文本和@Name参数有关,但我无法确切地确定问题是什么,以及为什么我的DataTable总是为空.

1 个回答
  • @Name参数之间删除单引号.

    sqlText += " AND [Name] LIKE @Name";
    

    2023-02-13 11:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有