转换错误 - > asp.net中uniqueidentifier的字符串

时间:2011-10-10 06:15:51

标签: asp.net sql-server-2005

我有一个商店程序,如:

ALTER procedure [dbo].[prcDisplayTpTestimonial]
@personname varchar(100),
@orderby varchar(100),
@OrderByDirection varchar(100)

As
Begin
    set nocount on;

select t.id_testimonials,
       (select client_name
        from   tp_Client_Master c
        where  c.client_id = t.client_id) as client_name,
       t.Person_Name,
       t.Description
from   tp_Testimonial_master t
where  t.Person_name like '%' + @personname + '%'
       and t.syncoperation <> 'D'
order  by case
            when @orderby = 'Person_Name'
                 and @OrderByDirection = 'asc' then Person_Name
          end asc,
          case
            when @orderby = 'Person_Name'
                 and @OrderByDirection = 'desc' then Person_Name
          end desc,
          case
            when @orderby = 'Description'
                 and @OrderByDirection = 'asc' then Description
          end asc,
          case
            when @orderby = 'Description'
                 and @OrderByDirection = 'desc' then Description
          end desc  


End

这工作正常,但是当我运行我的cs页面时,它给出了uniqueidentifier错误,这是我的 cs代码:

SqlCommand cmd1 = new SqlCommand("prcDisplayTpTestimonial", con);
        cmd1.CommandType = CommandType.StoredProcedure;

        cmd1.Parameters.Add(new SqlParameter("@personname", SqlDbType.VarChar)).Value = clientSearch.Text.ToString().Trim();

        cmd1.Parameters.Add(new SqlParameter("@orderby", SqlDbType.VarChar)).Value = sort;
        cmd1.Parameters.Add(new SqlParameter("@OrderByDirection", SqlDbType.VarChar)).Value = sort_direction;


        DataTable dt = new DataTable();
        SqlDataAdapter adp = new SqlDataAdapter(cmd1);
        adp.Fill(dt);
        dgTestimonial.DataSource = dt;
        dgTestimonial.DataBind();

1 个答案:

答案 0 :(得分:0)

在某处,您将字符串值传递给数据库中的uniqueidentifier字段。

确保c.client_idt.client_id都是相同的数据类型。

就您选择的数据类型而言,请记住,uniqueidentifier类型更适用于表格中的电子邮件地址等内容,以便每行都有唯一的电子邮件地址(例如) - 除非我弄错了。

对于行ID列,我在列上使用int数据类型identity(1,1),或者使用默认值为varchar的{​​{1}}数据类型。

希望这有帮助。