Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Retunera Guid ID från databasen vid insert

Postades av 2005-01-27 13:15:07 - Tyronne Engström, i forum c# (c-sharp), Tråden har 15 Kommentarer och lästs av 799 personer

Hej!

Jag använder mig av Guid som ID post när jag skapar rader i en tabell.

För detta använder jag mig av en SP

<code>
-- ----------------------------------------------------------------------------------------
-- System:
-- spInsertProduct
--
-- Beskrivning
-- Skapar en ny Product
--
-- Parametrar
--
-- $History: $
-- ----------------------------------------------------------------------------------------
ALTER PROCEDURE spInsertProduct
-- Parametrar


@Product VARCHAR(50),
@ProductCatID uniqueidentifier,
@Price Money,
@Regtime datetime,
@RegPerson uniqueidentifier,
@ChangeTime datetime,
@ChangePerson uniqueidentifier

AS
SET NOCOUNT ON

INSERT INTO
tbl_Product
(

Product,
ProductCatID,
Price,
Regtime,
RegPerson,
ChangeTime,
ChangePerson
)

VALUES
(

@Product,
@ProductCatID,
@Price,
@Regtime,
@RegPerson,
@ChangeTime,
@ChangePerson

)
IF @@ROWCOUNT = 1
RETURN 0
ELSE
RETURN -1

-- EOF --
</code>


nu undrar jag hur jag kan returnera vilket Guid posten fick. Jag vill slipppa göra en ny fråga för att se vilket ID posten fick. Jag skall skapa en koppling till en annan tabel och spara ner det nya ID numret där.

Alltså.
1. Spara ner en post i tabellen

2. Få reda på vilket ID nummer denna fick utan att behöva skicka in en ny fråga för att plocka ut ID numret som jag sedan skall direkt in i en ny tabell


Svara

Sv: Retunera Guid ID från databasen vid insert

Postades av 2005-01-28 08:10:34 - Ola Lindfeldt

Du ska titta på @@IDENTITY / SCOPE_IDENTITY.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_sa-ses_6n8p.asp



Svara

Sv:Retunera Guid ID från databasen vid insert

Postades av 2005-01-28 08:25:47 - Christoffer Hedgate

>Du ska titta på @@IDENTITY / SCOPE_IDENTITY.

De används bara för att få värdet i IDENTITY-kolumner, detta gällde en kolumn av datatypen uniqueidentifier. Tyronne, jag antar att du har en kolumn i tbl_Product som är skapad med DEFAULT NEWID(). Jag rekommenderar att du tar bort defaulten på den och istället skapar och insertar värdet till den i din procedur (fortfarande med NEWID()). På så vis kan du returnera det värde som användes i en out-parameter.


Svara

Sv: Retunera Guid ID från databasen vid insert

Postades av 2005-01-28 09:11:40 - Tyronne Engström

Japp det har jag och den heter ju ProductID och är en uniqueidentifier. Så om jag fattar dig rätt så skall jag lägga in NEWID(). in i min insert procedur.

Jag har läst artikel enl ovan, så om jag i slutet skriver
<code>
SELECT @@IDENTITY AS 'Identity'
</code>

Så kan jag fånga upp det tilldelade id numret

via
<code>
result = cmd.ExecuteNonQuery();
</code>

dvs att jag deklarerar result som en Guid.

är jag rätt på det eller behöver jag göra mer


/Tyronne


Svara

Sv:Retunera Guid ID från databasen vid insert

Postades av 2005-01-28 11:53:14 - Christoffer Hedgate

Nja, inte riktigt rätt. Så här bör din proc bli (om du fortfarande vill returnera 1 eller 0 som du gjorde från början):

ALTER PROCEDURE spInsertProduct
    -- Parametrar
    @Product                VARCHAR(50),
    @ProductCatID            uniqueidentifier,
    @Price                    Money,
    @Regtime                datetime,
    @RegPerson                uniqueidentifier,
    @ChangeTime                datetime,
    @ChangePerson            uniqueidentifier,
    @NewId            uniqueidentifier OUT
AS
BEGIN
    SET NOCOUNT ON

    DECLARE @productId uniqueidentifier
    SET @productId = NEWID()
    
    INSERT INTO 
    tbl_Product
    (
        ProductId,
        Product,
        ProductCatID,
        Price,
        Regtime,
        RegPerson,
        ChangeTime,
        ChangePerson
    )
    VALUES 
    (
        @productId, 
        @Product, 
        @ProductCatID,
        @Price,
        @Regtime, 
        @RegPerson,
        @ChangeTime,
        @ChangePerson
    )

    IF @@ROWCOUNT = 1
    BEGIN
        SET @NewId = @productId
        RETURN 0
    END
    ELSE
    BEGIN
        SET @NewId = NULL
        RETURN -1
    END
END
GO

-- För att testa
DECLARE @NewId uniqueidentifier
EXEC spInsertProduct 'En produkt...'
  , 'C11BA534-A6C3-444C-9508-57160A2FE63C'
  , 0
  , '2005-01-28'
  , 'C11BA534-A6C3-444C-9508-57160A2FE63C'
  , '2005-01-28'
  , 'C11BA534-A6C3-444C-9508-57160A2FE63C'
  , @NewId OUT
PRINT @NewId


Svara

Sv: Retunera Guid ID från databasen vid insert

Postades av 2005-01-28 20:48:12 - Tyronne Engström

Tack!

Bara en sista fråga då hur tar jag emot idnumret i metoden.
Just nu så har jag ju

result = cmd.ExecuteNonQuery(); och här fångar jag ju 1 eller nollan. Hur skriver jag då för att kunna lagra ProductID i en variabel.


/Tyronne


Svara

Sv:Retunera Guid ID från databasen vid insert

Postades av 2005-01-28 22:11:34 - Mikael Wedham

Parameter - direction OUT

/micke


Svara

Sv:Retunera Guid ID från databasen vid insert

Postades av 2005-01-28 22:43:38 - Håkan Borneland

@Product               VARCHAR(50),
@ProductCatID       uniqueidentifier  OUTPUT,
@Price                   Money,
@Regtime              datetime,
@RegPerson           uniqueidentifier,
@ChangeTime        datetime,
@ChangePerson      uniqueidentifier


Edit: såg att Christoffer redan gjort detta i sitt svar.

//Håkan


Svara

Sv:Retunera Guid ID från databasen vid insert

Postades av 2005-01-30 20:48:31 - Christoffer Hedgate

När du skapar parametrarna till ditt SqlCommand-objekt får du skapa den som output-parameter.


Svara

Sv: Retunera Guid ID från databasen vid insert

Postades av 2005-01-31 10:06:53 - Tyronne Engström

Ok


jag har försökt det men jag hittar inget som fungerar. dvs jag har försökt testa mig fram för att få ut NewId värdet ur proceduren. Och jag hittar inget i MSDN som kan passa.

/Tyronne


Svara

Sv:Retunera Guid ID från databasen vid insert

Postades av 2005-01-31 10:37:00 - Christoffer Hedgate

<code>
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "spInsertProduct";

// kod som lägger till övriga parametrar här

SqlParameter newId = new SqlParameter("@NewId", SqlDbType.UniqueIdentifier);
newId.Direction = ParameterDirection.Output;
cmd.Parameters.Add(newId);

result = cmd.ExecuteNonQuery();

Guid guid = cmd.Parameters("@NewId").Value;
</code>


Svara

Sv: Retunera Guid ID från databasen vid insert

Postades av 2005-01-31 10:52:15 - Tyronne Engström

Tack för hjälpen

/Tyronne


Svara

Sv:Retunera Guid ID från databasen vid insert

Postades av 2005-02-06 19:45:09 - Tyronne Engström

Jo Christoffer en fråga bara!


I ditt exempel så skrver du

<code>
Guid guid = cmd.Parameters("@NewId").Value;
</code>

problemet är ju bara att Parameters är en egenskap coh kräver ex add() mm. VS Klagar på att den hittade just en egenskap när den förväntade en metod. Vad har vi missat?

/Tyronne


Svara

Sv: Retunera Guid ID från databasen vid insert

Postades av 2005-02-06 20:19:20 - Oskar Johansson

Det är en array, ska vara
["@NewId"] istället


Svara

Sv: Retunera Guid ID från databasen vid insert

Postades av 2005-02-06 22:55:02 - Christoffer Hedgate

Ledsen, skrev ur huvudet så det blev fel där. Oskar gav dig svaret.


Svara

Sv:Retunera Guid ID från databasen vid insert

Postades av 2005-02-07 19:00:15 - Tyronne Engström

Tack för hjälpen grabbar!

/Tyronne


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 165
27 952
271 704
559
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies