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


SCOPE_IDENTITY i SQL server 2005 CE

Postades av 2008-11-26 10:30:17 - Niklas Jansson, i forum sql-server/msde, Tråden har 13 Kommentarer och lästs av 1610 personer

Försöker mig på en

INSERT INTO Tabell(A, B, C) VALUES("X", Y", "Z");
SELECT SCOPE_IDENTITY()

i DataSet kopplat mot SQL Server 2005 Compact edition, men det jävlas med mig, säger "invalid token".
Stöds inte scope_identity i CE?

Nu är det ett ganska lågt användarantal, så jag borde kunna köra på @@IDENTITY, men jag skulle ju helst undvika.


Svara

Sv: SCOPE_IDENTITY i SQL server 2005 CE

Postades av 2008-11-26 12:04:39 - Johan Djupmarker

SCOPE_IDENTITY och @@IDENTITY utgår båda från din connection, så även om du har massa samtidiga användare så kan du aldrig få "någon annans" @@IDENTITY.

Sedan vet jag inte om SQL Server CE har stöd för flera frågor "i samma", du kanske behöver göra en separat "SELECT @@IDENTITY" för att hämta upp det (på samma connection givetvis).

/Johan


Svara

Sv:SCOPE_IDENTITY i SQL server 2005 CE

Postades av 2008-11-26 12:59:11 - Niklas Jansson

Nä, precis, insåg det. Problemet är ju om det skulle finnas triggers, och det kommer det inte göra. Men det spelar inte så stor roll eftersom problemet, precis som du skriver, är att CE inte klarar flera frågor på en gång.

Vilket i sin tur innebär att jag inte kan använda mig av auto-genererade DataSets, såvida jag inte kan modifiera DataSet-koden?

Min lösning får nog bli en fuling:
1. Ta bort identity-kolumner (vilket innebär "ta bort tabellhelvetet och lägg in en ny med exakt samma kolumner men utan identity på ID").
2. Skriv om det så att man väljer ID före insert, och sen fångar exceptions i en loop tills det går att göra en insert.
Jäääätte-snyggt... :(

Om någon har en bättre lösning är jag idel öra.

EDIT: Jag har heller ingen större lust att köra med GUID:s just nu.


Svara

Suported functions SQL server 2005 CE

Postades av 2008-11-26 13:37:05 - Jon Wiberg

Titta på denna sida http://msdn.microsoft.com/en-us/library/ms174077(SQL.90).aspx
Så ser du varför du intekan göra det.
SCOPE_IDENTITY() verkar inte finnas med bland supported functions.
(om det inte finns tillagt i ngn nyare version SP eller motsv)

@@IDENTITY är en lösning
Guid som ID en annan.... ( och då skapade Guid i din applikation och skicka in dessa till databasen så vet du dessutom sedan innan vilket id:t är för din skapade post utan att behöva hämta tillbaka det)


Svara

Sv: SCOPE_IDENTITY i SQL server 2005 CE

Postades av 2008-11-26 13:39:20 - Johan Djupmarker

Klart det finns snyggare lösningar, frågan är bara vad du vill åstadkomma? Får lite känslan av att denna artikeln skulle kunna hjälpa dej, men jag kan ju ha missat lite vad du vill göra: http://msdn.microsoft.com/sv-se/magazine/cc164120(en-us).aspx

/Johan


Svara

Sv: Suported functions SQL server 2005 CE

Postades av 2008-11-26 15:21:53 - Niklas Jansson

<b>>@@IDENTITY är en lösning</b>
Nej. Eftersom jag inte kan göra två anrop i samma query, så måste jag antingen modifiera det sätt som mitt dataset kommunicerar med databasen eller helt och hållet skippa autogenererade strongly typed datasets.

<b>>Guid som ID en annan.... ( och då skapade Guid i din applikation och skicka in dessa till databasen så vet du dessutom sedan innan vilket id:t är för din skapade post utan att behöva hämta tillbaka det)</b>
Ja, men det är bara slightly snyggare kodmässigt än en Max(ID)-loop, och rätt tråkigt att arbeta med om man vill kolla på id-numret i efterhand. Men det är ett rätt vekt argument så jag har ännu inte bestämt mig.

Johan:
Ja, det är väl grovt uttryckt det. Men i huvudsak är det bara att jag vill kunna anropa en insert och få tillbaks id-numret, i ett strongly typed dataset med SSCE.

Tabell1 (ID, A, B)
Tabell2 (ID, T2ID, C)

Och jag vill sätta in:
("X", "Y") i tabell1
och
("Z1")
("Z2")
("Z3")

I tabell 2, där T2ID blir id-numret för ("X", "Y").


Svara

Sv:Suported functions SQL server 2005 CE

Postades av 2008-11-26 16:07:01 - Johan Djupmarker

<b>Men i huvudsak är det bara att jag vill kunna anropa en insert och få tillbaks id-numret, i ett strongly typed dataset med SSCE.</b>

Ja, det visas i den artikeln... Klipper in lite kod hur jag har gjort det, men mitt dataset är inte typat samt att det är MySql istället.

//_da är min dataadapter
_da.RowUpdated += new MySqlRowUpdatedEventHandler(_da_RowUpdated);

//_columnToUpdate är en sträng med "ID"-kolumnnamnet
void _da_RowUpdated(object sender, MySqlRowUpdatedEventArgs e)
{
if ((e.Status == UpdateStatus.Continue) && (e.StatementType == StatementType.Insert))
{
MySqlCommand oCmd = new MySqlCommand("SELECT @@IDENTITY", _con, _trans);
string old = e.Row[_columnToUpdate].ToString();
e.Row[_columnToUpdate] = oCmd.ExecuteScalar();
e.Row.AcceptChanges();
}
}


/Johan


Svara

Sv: Suported functions SQL server 2005 CE

Postades av 2008-11-26 17:01:29 - Niklas Jansson

<b>>men mitt dataset är inte typat</b>
Hur får man en "dataadapter" från en typad TableAdapter?
Eller tänker jag fel nu?

Sen förstår jag nog inte exakt vad du gör i RowUpdated; du tilldelar @@IDENTITY till en id-kolumn i e.row?
Lägger du in den i din datatable, och kör en insert på själva datatable:n?
Jag har alltså ingen databinding, och kör just nu med

XTableAdapter.Insert(...)

Sorry om jag e rörig och osammanhängande, jag känner mig lite lätt efter när det kommer till datasets just nu... ;-)


Svara

Sv:Suported functions SQL server 2005 CE

Postades av 2008-11-26 17:37:19 - Johan Djupmarker

Har själv aldrig använt designern för att göra databas-kopplingar, så jag är inte helt med på vad du menar. Men om vi tar det från början. Jag förklarar hur jag gjort, så kanske du kan förklara vad som skiljer sig mot ditt upplägg och så utgår vi från det sedan.

- Jag har en tabell i db.
- Fyller en DataTable i ett DataSet med hjälp av en DataAdapter.
- Jag lägger till poster i min DataTable som jag vill spara ner till DB samt få tillbaka ett autogenererat ID från DB.
- Jag hookar eventet RowUpdated på DataAdaptern (som triggas efter varje insert i DB)
- Direkt efter varje Insert kör jag en "SELECT @@IDENTITY" som uppdaterar mitt DataTable med ID som genererades i DB.

Det känns som att du jobbar med egna Inserts, så vad gör du och vad vill du ha ID till?

/Johan


Svara

Sv: Suported functions SQL server 2005 CE

Postades av 2008-11-27 09:12:19 - Niklas Jansson

Hmm... Okej, jag kan beskriva ungefär vad jag har gjort;
- Ett antal tabeller i DB, Tabell1, Tabell2, kan vi säga.
- Skapar ett strongly typed DataSet ("DS") via designern, som i sin tur då innehåller "DS.Tabell1", "DS.Tabell2", "DS.Tabell1TableAdapter", "DS.Tabell2TableAdapter", och motsvarande DataRows etc.
- Till varje TableAdapter kan jag lägga queries, och jag får några fördefinierade; typ
DS.Tabell1TableAdapter.GetData() = "SELECT a, b, c FROM Tabell1"
Och till det också två insert, dels
DS.Tabell1TableAdapter.Insert(a as integer, b as string, c as string)
och dels
DS.Tabell1TableAdapter.Insert(x as DS.Tabell1Row)

Och jag har (enligt en guide från ms) gett mig på att skapa ett BLL som arbetar mot mina TableAdapters, typ Tabell1BLL, som innehåller en Insert-funktion, vilken ska göra businesslogic och sen sätta in en rad i tabellen.

Jag redigerar alltså inte min DataTable utan kommunicerar med min Adapter. Är förslaget då att jag istället borde skriva om min BLL så att den hämtar hem en DataTable och redigerar den?
Känns ju sådär just nu...

Och sen kommer jag inte hinna göra om detta till leveransen imorgon ändå... =)
Det får bli en ändring i efterhand.

Sen har jag andra frågor om SQL CE; någon som vet något vettigt verktyg för redigera Tabeller etc., eller kopiera databaser och bara ta med vissa fält, eller på något sätt få ut CREATE TABLE-koden?
Jag får till exempel inte växla mellan "identity" och "inte identity" i en befintlig, tom tabell, vilket gör olika designval till ett veritabelt helvete.

(Det är en winapp btw, om det skulle ge någon skillnad.)


Svara

Sv:Suported functions SQL server 2005 CE

Postades av 2008-11-27 09:59:19 - Johan Djupmarker

Jag har inte testat, men det borde inte vara någon skillnad mot det jag har gjort. Finns inte händelsen RowUpdated på din DS.Tabell1TableAdapter? Den triggas när datat sparas till DB. Har inte använt VB.NET på väldigt länge, så jag kommer tyvärr inte ihåg rätt syntax.

/Johan


Svara

Sv: Suported functions SQL server 2005 CE

Postades av 2008-11-27 10:28:42 - Niklas Jansson

<b>>Finns inte händelsen RowUpdated på din DS.Tabell1TableAdapter?</b>
Njae, skumt. Inte på Adaptern, men däremot finns en RowChanged på min Table. Det känns som att det är när man gör grejer med själva tabellen, hur skulle en table känna till en ändring i databasen?

Det enda event som finns på DS.Tabell1TableAdapter är "Disposed", såvida jag inte missuppfattat detta kapitalt.


<b>>Har inte använt VB.NET på väldigt länge, så jag kommer tyvärr inte ihåg rätt syntax.</b>
Hrmph... salt i såren... jag har inte sagt att jag vill använda vb... =)


Svara

Sv:Suported functions SQL server 2005 CE

Postades av 2008-11-27 11:18:01 - Johan Djupmarker

<b>Hrmph... salt i såren... jag har inte sagt att jag vill använda vb... =)</b>

Nä, men dina exempel såg ut som VB-syntax, därför gissade jag det :)


Testade att sätta ihop ett projekt nu och ser att TableAdaptern inte har samma funktionalitet som DataAdaptern. Så jag vet inte hur man gör då, mer än att använda en DataAdapter istället.

/Johan


Svara

Sv: Suported functions SQL server 2005 CE

Postades av 2008-11-27 12:32:53 - Niklas Jansson

<b>>Nä, men dina exempel såg ut som VB-syntax, därför gissade jag det :)</b>
Alltså - jag använder vb - men det är mot min vilja...

<b>>Testade att sätta ihop ett projekt nu och ser att TableAdaptern inte har samma funktionalitet som DataAdaptern. Så jag vet inte hur man gör då, mer än att använda en DataAdapter istället.</b>
Bra!
Hellre veta att det inte går att ordna en bättre än lösning än att leva i ovisshet. Bara att göra det bästa av situationen istället. Tack för hjälpen!


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 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

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 615
27 953
271 709
5 588
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