sql模糊查询为什么返回时空值?? 急急急!!
public List<Notice> GetAllLike(string title)
{
//string sql = "select * from notice where notice.NoticeTitle like '%" + title + "% 'order by notice.PostDate desc ";
string sql = "select * from notice where notice.NoticeTitle like '%@NoticeTitle%' order by notice.PostDate desc ";
conn.Open();
SqlCommand comm = new SqlCommand(sql, conn);
SqlParameter par = new SqlParameter("@NoticeTitle", title);
comm.Parameters.Add(par);
SqlDataReader reader = comm.ExecuteReader();
List<Notice> list = new List<Notice>();
try
{
while (reader.Read())
{
Notice notice = new Notice();
notice.Id = Convert.ToInt32(reader["Id"]);
notice.NoticeTitle = reader["NoticeTitle"].ToString();
notice.NoticeContent = reader["NoticeContent"].ToString();
notice.PostName = reader["PostName"].ToString();
notice.PostTime = Convert.ToDateTime(reader["PostDate"]);
notice.NoticeDepartment = reader["NoticeDepartment"].ToString();
list.Add(notice);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
reader.Close();
conn.Close();
}
return list;
}
[最优解释]
你把正确的东西注释掉,写个不正确的出来,不知道什么原因?!
如果要拼接title变量,记着符合t-sql语法的写法应该对单引号转义,例如:
string sql = "select * from notice where notice.NoticeTitle like '%" + title.Replace("'","''")
+ "% 'order by notice.PostDate desc ";
[其他解释]
public DataSet GetAllLike(string title)
{
//string sql = "select * from notice where notice.PostDate like '%" + title + "%' order by notice.PostDate desc ";
string sql = String .Format ("select * from notice where notice.NoticeTitle like '{0}'order by notice.PostDate desc", title);
conn.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(ds, "notice");
conn.Close();
return ds;
}
这样写对吗? 不过还是空值 我都愁死了
[其他解释]
SqlParameter[] sp = new SqlParameter[1];
sp[0] = new SqlParameter("?aaa", SqlDbType.VarChar, 200);
sp[0].Value ="%" +"1"+"%";
DataTable dt = SqlHelper.ExecuteDataTable(connection, CommandType.Text, "SELECT * FROM T WHERE TID LIKE ?aaa", sp);
给你推荐一个写法
我这个是mysql的你MS SQL的也差不多只是?换成@
[其他解释]