使用sql选择查询

时间:2013-10-25 07:53:12

标签: c# sql

我正在尝试运行此代码

 public long getTopicCountWithTag(String tag)
    {
        long count;
        query = " SELECT count(*) FROM [DB_us2].[dbo].[discns] where tags like '%@tags%'";
        try
        {
            com = new SqlCommand(query, con);
            com.Parameters.AddWithValue("@tags", tag);
            con.Open();          
            sdr = com.ExecuteReader();
            sdr.Read();
            count= sdr.GetInt32(0);

        }
        catch (Exception e)
        {
            count = -1;
            throw e;
        }
        finally
        {
            con.Close();
        }
        return count;
    }

给出输出0。所以我尝试弄清楚问题是什么,并在管理工作室上运行示例查询,但输出与给出1不同。在尝试了所有排列组合之后,我认为问题在于com.Parameters.AddWithValue("@tags", tag);这句话可能@tags在查询中不会被替换。

3 个答案:

答案 0 :(得分:9)

我认为你的查询应该是

string query = "SELECT count(*) FROM [DB_us2].[dbo].[discns] where tags like @tags";

并将通配符添加到参数

com.Parameters.AddWithValue("@tags", "%" + tag + "%");

答案 1 :(得分:0)

应该是

 AddWithValue("@tags", "%" + tag + "%");

你必须将%s带入AddWithValue

答案 2 :(得分:0)

query = " SELECT count(*) FROM [DB_us2].[dbo].[discns] where tags like '%'+ @tags + '%'";

并保留原样。