Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как работать с Guid правильно? 
V
    Опции темы
dazy
Дата 18.4.2007, 06:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 4
Всего: 8



У меня есть две таблички master и detail (MS SQL 2005 E). 
В них ID  имеет тип uniqueidentifier.
Когда я передаю master_ID в хранимую процедуру для добавления записи в detail, то делаю ряд действий.
1 Cначала формирую url  страницы для отображения detail 
Код

    <%# "detail.aspx?detailID="+Eval("masterID") %>


2 На странице detail.aspx получаю detailID и из string делаю Guid. И вызываю запрос:

Код

Guid detailID = new Guid(Request.QueryString["detailID"].ToString());
BLLdetail.Insert(detailID);


3. Передаю detailID в хранимку, тут

Код

command.Parameters.Add(new SqlParameter("@detailID", detailID));


4. В хранимке @detailID имеет тип sql_variant, но само поле то типа uniqueidentifier.  Приходится его конвертировать в Guid (@_detailID) и далее использовать именно это поле.

Код

    @detailID       sql_variant
        
AS    

Declare        @_detailID uniqueidentifier
SET        @_detailID =  Convert(uniqueidentifier, @detailID)


Причем, если я в хранимке сразу опреляю тип @detailID  как uniqueidentifier, то SQL ругается, чего-то там не соответствует.


Подскажите, как можно избавится от  sql_variant в хранимке? Да и вообще может есть какие "типовые" способы работы с Guid и передачи его в качестве параметров? Что я делаю не правильно?

Это сообщение отредактировал(а) dazy - 18.4.2007, 06:10
PM MAIL   Вверх
Mymik
Дата 18.4.2007, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Код

Guid g = new Guid("{E857BB5D-E1DB-46A6-A3BF-DBA72D81F43F}");
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["Строка подключения"].ConnectionString))
{
    cn.Open();
    SqlCommand cm = new SqlCommand("MyProc", cn);
    cm.CommandType = CommandType.StoredProcedure;
    cm.Parameters.Add("@parm", SqlDbType.UniqueIdentifier);
    cm.Parameters["@parm"].Value = g;
    cm.ExecuteNonQuery();
}

@parm в хранимой процедуре MyProc должен быть объявлен как uniqueidentifier.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
dazy
Дата 18.4.2007, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 4
Всего: 8



Спасибо, то что надо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.