0

我可以让其他查询工作,但我无法让这个查询在 Visual Studio 中工作假设 ConnectionString 在这个函数之外声明

公共数据表GetDtSearch(字符串搜索名){

        string sql = "SELECT * FROM table WHERE (file_name LIKE @searchname)";


        DataTable dt = new DataTable();

        using (MySqlConnection con = new MySqlConnection(ConnectionString))
        {

            try
            {
                con.Open();
            }
            catch { return dt; }

            using (MySqlCommand cmd = new MySqlCommand(sql, con))
            {
                cmd.Parameters.Add(@searchname,"%"+ searchname+"%");
                using (MySqlDataAdapter adp = new MySqlDataAdapter(cmd))
                {
                    try
                    {
                        adp.Fill(dt);
                    }
                    catch
                    {

                    }

                }

            }
            con.Close();
        }




        return dt;
    }
4

2 回答 2

2
       cmd.Parameters.Add("@searchname","%"+ searchname+"%");

用引号将参数名称(第一个参数)括起来。

PS我已经对您的否决问题投了赞成票,但是反对者这样做是正确的-您需要说明发生了什么-错误消息,或“未返回结果”或比“无法获得此查询”更精确的内容去工作”。

PPS 另外,使用AddWithValue方法,因为 Add(string, object) 签名已被弃用。

于 2013-02-20T12:40:17.967 回答
0

在搜索参数周围加上引号。-
SELECT * FROM table WHERE (file_name LIKE '@searchname')

于 2013-02-20T12:28:32.683 回答