C#段存储过程读取错误

来源:百度知道 编辑:UC知道 时间:2024/06/27 08:00:57
存储过程
CREATE PROCEDURE dbo.selectTXT

(
@type bit,
@UserName varchar(64),
@kf varchar(64)
)

AS
if @type=1
BEGIN
select t_text,t_date,t_bs from me_txt where t_user=@UserName and t_kf=@kf and kf_get=0 order by t_date desc
--update me_txt set kf_get=1 where t_user=@UserName and t_kf=@kf
END
if @type=0
BEGIN
select t_text,t_date,t_bs from me_txt where t_user=@UserName and t_kf=@kf and user_get=0 order by t_date desc
--update me_txt set user_get=1 where t_user=@UserName and t_kf=@kf
END

RETURN
GO
----下面是C#代码

dbcmd.CommandType = CommandType.StoredProcedure;
dbcmd.CommandText = "selectTXT";
try
{
dbConnection.Open();
dbcmd.Parameters.Add("@UserName", SqlDbType.VarChar, 64).Value = this.Request["UserName"].Trim();
d

this.Request["UserName"]或者 this.Request["kf"]中有中文吧?
中文很可能在不同的编码下(gb2312,utf8)等表现出来是乱码,而不是你期望得到的内容。需要做编码转换。
你可以加个断点跟踪一下程序执行时的具体变量的值。

dbcmd.Parameters.Add("@type", SqlDbType.Bit).Value = Convert.ToInt32(this.Request["type"].Trim());
这句很危险呢 如果你传过来的不是0或者1 那肯定是不行的