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


en forum-fråga

Postades av 2006-12-27 20:30:07 - Sead Travancic, i forum asp.net generellt, Tråden har 8 Kommentarer och lästs av 630 personer

jag har en sida i mitt forum där användare kan skapa en ny tråd.

samtidigt som tråden skapas så skapas även det första inläget i tråden.

trådar sparas i DB-tabellen "threads" och inläggen i tabellen "posts"

eftersom jag skapar både tråden och det första inlägget samtidigt får jag problem med primär nyckeln (threadId) från "threads" när jag vill spara den i tebellen "posts".

jag vet inte vad den blir eftersom det är en räknare som uppdateras varje gång en ny tråd skapas.

nån som vet hur man får fram primär nyckeln till den sista posten i en DB-tabell?

eller nåt annat förslag på hur man kan kringå det här problemet...


Svara

Sv: en forum-fråga

Postades av 2006-12-27 20:32:57 - Per Persson

Vilken databas använder du?


Svara

Sv:en forum-fråga

Postades av 2006-12-27 20:57:18 - Sead Travancic

ms sql 2005


Svara

Sv: en forum-fråga

Postades av 2006-12-27 21:25:47 - Johan Djupmarker

Kör "SELECT @@IDENTITY" på samma connection så får du tillbaka senaste skapa "räknare" på aktuell connection.

/Johan


Svara

Sv:en forum-fråga

Postades av 2006-12-27 22:00:19 - Sead Travancic

kan du vara lite mer precis med vad du menar med "kör SELECT @@IDENTITY"??

menar du som en lagrad proc. el som en vanlig sql-fråga i asp?


Svara

Sv: en forum-fråga

Postades av 2006-12-28 07:53:16 - Johan Djupmarker

Det spelar inte så stor roll vilket. Antingen gör du en SP som först gör en "INSERT INTO threads (a,b,c) VALUES (1,2,3)" och sedan "SELECT @@IDENTITY" eller så gör du två separata anrop, det viktiga är att du använder samma connection.

/Johan


Svara

Sv:en forum-fråga

Postades av 2006-12-29 14:03:57 - Sead Travancic

jag gjorde det så här:

SP:

ALTER PROCEDURE dbo.StoredProcedure1

AS
SELECT IDENT_CURRENT('aspnet_Threads')



I min klass har jag följande Sub:

Sub addThread(ByVal ForumId As Integer, ByVal Headline As String, ByVal Message As String, ByVal User As String)

Dim dat As DateTime = DateTime.Now
Dim Threadid As Integer

Dim MyConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("WebbhotellConnectionString").ConnectionString)

Dim QSAddThread As String = "INSERT INTO aspnet_Threads (ForumId, Headline, Uname, Date) VALUES (@forumId, @rubrik, @anvandare, @dat)"
Dim SqlCmdAddThread As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand(QSAddThread, MyConnection)
Dim QSAddPost As String = "INSERT INTO aspnet_Posts (ThreadId, ForumId, Message, UName, Date) VALUES (@threadid, @forumId, @text, @anvandare, @dat)"
Dim SqlCmdAddPost As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand(QSAddPost, MyConnection)

'stored procedure
Dim cmd As SqlCommand = New SqlCommand("StoredProcedure1", MyConnection)
cmd.CommandType = CommandType.StoredProcedure


SqlCmdAddThread.Parameters.Add("@forumId", System.Data.SqlDbType.Int).Value = ForumId
SqlCmdAddThread.Parameters.Add("@rubrik", System.Data.SqlDbType.VarChar).Value = Headline
SqlCmdAddThread.Parameters.Add("@anvandare", System.Data.SqlDbType.VarChar).Value = User
SqlCmdAddThread.Parameters.Add("@dat", System.Data.SqlDbType.DateTime).Value = dat

SqlCmdAddPost.Parameters.Add("@forumId", System.Data.SqlDbType.Int).Value = ForumId
SqlCmdAddPost.Parameters.Add("@threadid", System.Data.SqlDbType.Int).Value = Threadid
SqlCmdAddPost.Parameters.Add("@text", System.Data.SqlDbType.Text).Value = Message
SqlCmdAddPost.Parameters.Add("@anvandare", System.Data.SqlDbType.VarChar).Value = User
SqlCmdAddPost.Parameters.Add("@dat", System.Data.SqlDbType.DateTime).Value = dat

MyConnection.Open()
Try
SqlCmdAddThread.ExecuteNonQuery()
Threadid = cmd.ExecuteScalar()
SqlCmdAddPost.ExecuteNonQuery()

Finally
MyConnection.Close()
End Try

End Sub


Mitt problem är att threadId i DB-tabellen "aspnet_Posts" blir noll. Nån som vet varför??

När jag debugar koden rad för rad får jag rätt värde på threadid men sen när allting ska in i tabellen så blir det fel...


Svara

Sv: en forum-fråga

Postades av 2007-01-03 13:22:15 - Magnus Hallberg

Är inte riktigt säker på att jag är med på vad du menar. Men att hämta ut @@IDENTITY måste ju var det enklaste tycker jag.

SP:
<code>
BEGIN TRY
BEGIN TRAN
DECLARE @errMess varchar(100)
DECLARE @id int
SET @id = 0
SET @errMess = 'ETT FELMEDDELANDE OM DET INTE GICK ATT LÄGGA TILL POSTEN I THREADS'
INSERT INTO aspnet_Threads (ForumId, Headline, Uname, Date)
VALUES (@forumId, @rubrik, @anvandare, @dat)
SET @id = @@IDENTITY
IF(@id== 0) -- Om @@IDENTITY är 0 så är det ju något fel, då kastas ett fel som hanteras i CATCH
RAISERROR('', 16, 1)

SET @errMess = 'ETT FELMEDDELANDE OM DET INTE GICK ATT LÄGGA TILL POSTEN I POSTS'
INSERT INTO aspnet_Posts (ThreadId, ForumId, Message, UName, Date)
VALUES (@ThreadId, @id, @text, @anvandare, @dat)
IF(@@ROWCOUNT = 1)
COMMIT TRAN
ELSE
RAISERROR('', 16, 1)
END TRY
BEGIN CATCH
ROLLBACK TRAN
RAISERROR(@errMess, 16, 1)
RETURN
END CATCH
</code>
Är kanske nåt fel i koden, jag skrev den direkt i forumet. jag la till en transaktion eftersom det är två insättningar och om den första misslyckas så ska du väl inte utföra den andra? Jag har inte heller skrivit upp parametrarna i SP. Misslyckas den första insättnngen så kastar SQL ett eget fel och då får du ut det felmeddelande du har skrivit där. Hoppas det hjälper


Svara

Sv:en forum-fråga

Postades av 2007-01-03 22:23:35 - Sead Travancic

tack för hjälpen!

Det funkar perfekt med din SP...


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 170
27 953
271 705
3 960
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