C# 带有SQL参数的Asp.net方法返回错误的结果
我正在使用存储过程和方法进行搜索。我正在发送一个名为@tag的参数C# 带有SQL参数的Asp.net方法返回错误的结果,c#,asp.net,sql,stored-procedures,objectdatasource,C#,Asp.net,Sql,Stored Procedures,Objectdatasource,我正在使用存储过程和方法进行搜索。我正在发送一个名为@tag的参数 @tag varchar AS SELECT top 50 comment_id, comment_post_id, comment_user_id, comment_text, comment_like, comment_dislike, comment_reply_to_id, comment_date, UserId, UserName, profil_foto_kucuk, profil_fot
@tag varchar
AS
SELECT top 50
comment_id,
comment_post_id,
comment_user_id,
comment_text,
comment_like,
comment_dislike,
comment_reply_to_id,
comment_date,
UserId,
UserName,
profil_foto_kucuk,
profil_foto_buyuk,
post_etiket
FROM
comment
inner join aspnet_Users on comment.comment_user_id = aspnet_Users.UserID
inner join profil on comment.comment_user_id = profil.profil_user_id
inner join post on comment.comment_post_id=post.post_id
WHERE
comment_text like '%'+ @tag +'%'
ORDER BY comment_date DESC
例如,数据库中@tag=akdeniz只有一个结果。当我为手动执行sp时
注释\u文本,如“%”+akdeniz+“%”
返回一个结果。 但当我从asp.net端发送参数时,会返回所有值。 net端
<SelectParameters>
<asp:QueryStringParameter Name="tag" QueryStringField="tag" Type="String" />
</SelectParameters>
方法
public static List<Yorum> SearchYorumlariGetir(string tag)
{
List<Yorum> yorum_listesi = new List<Yorum>();
try
{
SqlConnection baglanti = new SqlConnection(data_works.dbconnect());
try
{
SqlCommand komut = new SqlCommand("sp_search_yorum_getir", baglanti);
komut.CommandType = CommandType.StoredProcedure;
komut.Parameters.AddWithValue("@tag", tag);
Yorum yorum = null;
baglanti.Open();
SqlDataReader dr = komut.ExecuteReader(CommandBehavior.CloseConnection);
try
{
while (dr.Read())
{
yorum = new Yorum();
yorum.Yorum_ID = dr.GetInt32(dr.GetOrdinal("comment_id"));
yorum.Post_ID = dr.GetInt32(dr.GetOrdinal("comment_post_id"));
yorum.User_ID = dr.GetGuid(dr.GetOrdinal("comment_user_id"));
yorum.Yorum_UserName = dr.GetString(dr.GetOrdinal("UserName"));
yorum.Yorum_Text = dr.GetString(dr.GetOrdinal("comment_text"));
yorum.Yorum_Like = dr.GetInt32(dr.GetOrdinal("comment_like"));
yorum.Yorum_Dislike = dr.GetInt32(dr.GetOrdinal("comment_dislike"));
yorum.Yorum_ReplyTo_ID = dr.GetInt32(dr.GetOrdinal("comment_reply_to_id"));
yorum.Yorum_Date = dr.GetDateTime(dr.GetOrdinal("comment_date"));
yorum.Yorum_Post_Etiket = dr.GetString(dr.GetOrdinal("post_etiket"));
yorum.Yorum_Profil_Foto_Kucuk = dr.GetString(dr.GetOrdinal("profil_foto_kucuk"));
yorum.Yorum_Profil_Foto_Buyuk = dr.GetString(dr.GetOrdinal("profil_foto_buyuk"));
yorum_listesi.Add(yorum);
}
dr.Close();
}
finally
{
if (dr != null)
{
((IDisposable)dr).Dispose();
}
}
}
finally
{
if (baglanti != null)
{
((IDisposable)baglanti).Dispose();
}
}
}
catch (Exception exception)
{
throw exception;
}
List<Yorum> yorums = yorum_listesi;
return yorums;
}
publicstaticlist SearchYorumlariGetir(字符串标记)
{
List yorum_listsi=新列表();
尝试
{
SqlConnection baglanti=新的SqlConnection(data_works.dbconnect());
尝试
{
SqlCommand komut=新的SqlCommand(“搜索引擎”,baglanti);
komut.CommandType=CommandType.StoredProcess;
komut.Parameters.AddWithValue(“@tag”,tag);
约伦约伦=零;
baglanti.Open();
SqlDataReader dr=komut.ExecuteReader(CommandBehavior.CloseConnection);
尝试
{
while(dr.Read())
{
约伦=新约伦();
yorum.yorum_ID=dr.GetInt32(dr.GetOrdinal(“comment_ID”);
yorum.Post_ID=dr.GetInt32(dr.GetOrdinal(“comment_Post_ID”);
yorum.User_ID=dr.GetGuid(dr.GetOrdinal(“comment_User_ID”);
yorum.yorum_UserName=dr.GetString(dr.GetOrdinal(“用户名”));
yorum.yorum_Text=dr.GetString(dr.GetOrdinal(“comment_Text”);
yorum.yorum_Like=dr.GetInt32(dr.GetOrdinal(“comment_Like”);
yorum.yorum_厌恶=dr.GetInt32(dr.GetOrdinal(“评论_厌恶”));
yorum.yorum_ReplyTo_ID=dr.GetInt32(dr.GetOrdinal(“comment_reply_to_ID”);
yorum.yorum_Date=dr.GetDateTime(dr.GetOrdinal(“评论日期”));
yorum.yorum_Post_Etiket=dr.GetString(dr.GetOrdinal(“Post_Etiket”);
yorum.yorum_Profil_Foto_Kucuk=dr.GetString(dr.GetOrdinal(“Profil_Foto_Kucuk”);
yorum.yorum_Profil_Foto_Buyuk=dr.GetString(dr.GetOrdinal(“Profil_Foto_Buyuk”);
加上(约伦);
}
Close博士();
}
最后
{
如果(dr!=null)
{
((IDisposable)dr.Dispose();
}
}
}
最后
{
如果(baglanti!=null)
{
((IDisposable)baglanti.Dispose();
}
}
}
捕获(异常)
{
抛出异常;
}
列表yorums=yorum_listesi;
返回约伦;
}
我不明白为什么会发生这种情况。当存储过程有一个varchar参数时,需要指定一个长度,如果没有,它将只使用第一个字符 例如:
哈哈……我真不敢相信我居然错过了:)谢谢你,伙计。
public static List<Yorum> SearchYorumlariGetir(string tag)
{
List<Yorum> yorum_listesi = new List<Yorum>();
try
{
SqlConnection baglanti = new SqlConnection(data_works.dbconnect());
try
{
SqlCommand komut = new SqlCommand("sp_search_yorum_getir", baglanti);
komut.CommandType = CommandType.StoredProcedure;
komut.Parameters.AddWithValue("@tag", tag);
Yorum yorum = null;
baglanti.Open();
SqlDataReader dr = komut.ExecuteReader(CommandBehavior.CloseConnection);
try
{
while (dr.Read())
{
yorum = new Yorum();
yorum.Yorum_ID = dr.GetInt32(dr.GetOrdinal("comment_id"));
yorum.Post_ID = dr.GetInt32(dr.GetOrdinal("comment_post_id"));
yorum.User_ID = dr.GetGuid(dr.GetOrdinal("comment_user_id"));
yorum.Yorum_UserName = dr.GetString(dr.GetOrdinal("UserName"));
yorum.Yorum_Text = dr.GetString(dr.GetOrdinal("comment_text"));
yorum.Yorum_Like = dr.GetInt32(dr.GetOrdinal("comment_like"));
yorum.Yorum_Dislike = dr.GetInt32(dr.GetOrdinal("comment_dislike"));
yorum.Yorum_ReplyTo_ID = dr.GetInt32(dr.GetOrdinal("comment_reply_to_id"));
yorum.Yorum_Date = dr.GetDateTime(dr.GetOrdinal("comment_date"));
yorum.Yorum_Post_Etiket = dr.GetString(dr.GetOrdinal("post_etiket"));
yorum.Yorum_Profil_Foto_Kucuk = dr.GetString(dr.GetOrdinal("profil_foto_kucuk"));
yorum.Yorum_Profil_Foto_Buyuk = dr.GetString(dr.GetOrdinal("profil_foto_buyuk"));
yorum_listesi.Add(yorum);
}
dr.Close();
}
finally
{
if (dr != null)
{
((IDisposable)dr).Dispose();
}
}
}
finally
{
if (baglanti != null)
{
((IDisposable)baglanti).Dispose();
}
}
}
catch (Exception exception)
{
throw exception;
}
List<Yorum> yorums = yorum_listesi;
return yorums;
}
@tag varchar(48)