我正在尝试运行此代码
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
在查询中不会被替换。
答案 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 + '%'";
并保留原样。