webForumDet fria alternativet

skapa poster i mssqldatabas med c#

Databaser & SQL

28 svar · 1 935 visningar · startad av Sanji · sida 2 av 2

Frågan, av Sanji

Hej! Jag har en asp.net applikation som först ska lägga till en post i en tabell, och sedan omedelbart hämta denna information igen från databasen för att sedan lägga till ännu en post fast i en annan tabell. Den andra posten är beroende av information från den första för att resten av applikationen ska fungera som den ska. Hur kan jag göra detta? Jag måste hämta ID't från första posten för att lä

Läs frågan i sin helhet →
Medlem sedan juli 2009355 inlägg
#21

det är ju sant med datatyperna, jag ska ta och ändra på det... tack för alla tips, nu ska jag hämta SQL Server Management Studio Express ^^ jag återkommer när jag har testat SP'n!

Medlem sedan juni 200032 967 inlägg
#22

@@identity och scope_identity ger dig endast värden från identity-kolumner - dvs det fungerar inte med uniqueidentifier / guid.
En workaround kan vara att lägga till en "vanlig" räknare - plocka fram dess värde med scope_identity och sedan använda det värdet för att hämta ut postens uinqueidentifier.

Medlem sedan juli 2009355 inlägg
#23

ah okej, med andra ord en ny kolumn med autoincrement? då testar jag detta ^^

Medlem sedan jan. 20023 327 inlägg
#24

Vänta lite nu... Grundproblemet var att du vill ha tag på det nyligen skapade id-värdet för att kunna "putta" in relaterad information i en annan tabell? I så fall är det ganska smidigt om du använder uniqueidentifier (GUID) eftersom du kan generera ett unikt värde själv, innan du sparar informationen. Antingen med t-sql eller C#.

Om du fortfarande vill använda din SP så gör du enligt följande (datatyperna i parametrarna får du korrigera själv)...

ALTER PROCEDURE AddArticles_InqArticles
(
	@companyID varchar(50),
	@articlenr varchar(50),
	@term varchar(50),
	@description varchar(MAX),

	@inquiryartID varchar(50),
	@inquiryID varchar(50),
	@notice int,
	@revnr varchar(30),
	@pieces varchar(13),
	@suborder varchar(13),
	@articletext varchar(MAX)
)
AS
BEGIN
    declare @ID uniqueidentifier 
    SELECT @ID = newid()

    -- Notera att jag använder @ID som parametervärde för att sätta ID för den nya artikelraden
    insert into article([B]ID[/B],companyID,articlenr,term,description)Values([B]@ID[/B],@companyID,@articlenr,@term,@description)

    -- Här använder vi @ID som parametervärde för articleID för att referera till en rad i article
    insert into inquiryarticles(inquiryartID,[B]articleID[/B],inquiryID,revnr,pieces,suborder,notice,articletext)VALUES(NULL,[B]@ID[/B],@inquiryID,@revnr,@pieces,@suborder,@notice,@articletext)
E
END

Om du vill skippa din SP och göra det i C#, så kan du göra enligt följande:

Guid id = Guid.NewGuid();
// Gör två inserts, en i article och en i inquiryArticles och använd variabeln id för att relatera raderna med varandra...
Medlem sedan juni 200032 967 inlägg
#25

Men, för sjuttsingen! Nu är det ju .NET-diskussion här. Jag flyttar tillbaka tråden, sen ska jag hålla mig härifrån. Jag lovar! :)

Medlem sedan jan. 20023 327 inlägg
#26

@nders skrev:

Men, för sjuttsingen! Nu är det ju .NET-diskussion här. Jag flyttar tillbaka tråden, sen ska jag hålla mig härifrån. Jag lovar! :)

Delning av tråden hade varit det bästa, men går det? :)

Medlem sedan juni 200032 967 inlägg
#27

Compusa skrev:

Delning av tråden hade varit det bästa, men går det? :)

Det går absolut. Du får det som tisdagsuppdrag. :)

Medlem sedan jan. 20023 327 inlägg
#28

Har flyttat C#/ASP.NET-relaterade inlägg till en ny tråd: Anropa Stored Procedure med C#. Sanji, fortsätt gärna diskussionen där, om dina frågor rör C#/ASP.NET. :)

Den här tråden flyttas tillbaka till Databashanterare & SQL.

Guldstjärna till mig @nders va? :)

Medlem sedan juli 2009355 inlägg
#29

häftigt :) springer över till den nya tråden en stund så får jag skriva här om mina SP's ^^

268 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)