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!
skapa poster i mssqldatabas med c#
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 →@@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.
ah okej, med andra ord en ny kolumn med autoincrement? då testar jag detta ^^
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...
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! :)
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? :)
Delning av tråden hade varit det bästa, men går det? :)
Det går absolut. Du får det som tisdagsuppdrag. :)
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? :)
häftigt :) springer över till den nya tråden en stund så får jag skriva här om mina SP's ^^
