Ошибка преобразования -> символьная строка в uniqueidentifier в asp.net - PullRequest
0 голосов
/ 10 октября 2011

У меня есть одна процедура хранения, как:

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 голосов
/ 10 октября 2011

Где-то вы передаете строковое значение в поле uniqueidentifier в вашей базе данных.

Убедитесь, что c.client_id и t.client_id имеют одинаковый тип данных.

Что касается типа данных, который вы выбираете, помните, что тип uniqueidentifier предназначен больше для таких вещей, как адреса электронной почты в таблице, чтобы каждая строка имела уникальный адрес электронной почты (например) - если только я не ' Я ошибаюсь.

Для столбцов с идентификатором строки я использую либо int типы данных с identity(1,1) для столбца, либо я использую varchar тип данных со значением по умолчанию new guid().

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...