zui > edb.programmering.* > edb.programmering.dotnet

Peter T. (21.02.2015, 12:00)
Jeg håber, jeg har ramt den rigtige gruppe. Ellers er der jo d.e.p.c. :)

Jeg har 2. udgave af Head First C#, som tager udgangspunkt i Visual
Studio 2010. Jeg har så hentet Visual Studio 2013 express, da det er
den, vi bruger på min uddannelse. Bogen har jeg selv købt til læring
herhjemme ved siden af undervisningsmaterialet i skolen.

I en opgave i bogen skal jeg oprette en 'local database' (SQL) i VS2010.
Det er nemt nok - også i 2013, hvor den hedder 'Server-based
Database'. Men i 2013 er interfacet noget anderledes.
Jeg skal bruge Column name, Data Type (int), Length (4), Allow Nulls
(false), Unique (true) og Primary Key (true). Problemet for mig i 2013
er kolonnerne Length og Unique.

Jeg kan oprette kolonnen Length via højreklik->menu og sætte hak ved
Length i databasevinduet. Length skal så have en værdi på 4. Jeg kan
bare ikke indtaste værdien. Jeg har trykket Update efter jeg har
oprettet Length. Ingen succes. Hvad skal jeg gøre her?

Så er der kolonnen Unique, som svjh er en del af VS2010 når jeg opretter
en ny lokal database. Denne Unique eksisterer ikke i VS2013. Så jeg
skal vel lave en ny kolonne. Hvordan gør jeg det? Eller er Unique
overhovedet nødvendig?
Peter T. (21.02.2015, 13:40)
Den 21-02-2015 kl. 11:00 skrev Peter T.:

> I en opgave i bogen skal jeg oprette en 'local database' (SQL) i VS2010.
> Det er nemt nok - også i 2013, hvor den hedder 'Server-based
> Database'. Men i 2013 er interfacet noget anderledes.
> Jeg skal bruge Column name, Data Type (int), Length (4), Allow Nulls
> (false), Unique (true) og Primary Key (true). Problemet for mig i 2013
> er kolonnerne Length og Unique.


Okay. Efter intensiv brug af google. I opgaven skal jeg bruge en
database i en såkaldt SQL server Compact Edition i VS2010, som ikke
længere eksisterer i VS2013. Så langt, så godt..
Arne Vajhøj (21.02.2015, 15:55)
On 2/21/2015 6:40 AM, Peter T. wrote:
> Den 21-02-2015 kl. 11:00 skrev Peter T.:
> Okay. Efter intensiv brug af google. I opgaven skal jeg bruge en
> database i en såkaldt SQL server Compact Edition i VS2010, som ikke
> længere eksisterer i VS2013. Så langt, så godt..


Jeg har et lidt anderledes forslag.

Hent den database software du ønsker at bruge seperat og installer den.

Opret de tabeller du skal bruge ved hjælp af SQL (CREATE TABLE)
i det/de tools som kommer med databasen.

Brug VS til at programmere i.

Arne

PS: Kopier evt. CREATE TABLE sætningerne ind som kommentar i programmet.
Peter T. (21.02.2015, 17:47)
Den 21-02-2015 kl. 14:55 skrev Arne Vajhøj:

> Jeg har et lidt anderledes forslag.
> Hent den database software du ønsker at bruge seperat og installer den.
> Opret de tabeller du skal bruge ved hjælp af SQL (CREATE TABLE)
> i det/de tools som kommer med databasen.
> Brug VS til at programmere i.
> Arne
> PS: Kopier evt. CREATE TABLE sætningerne ind som kommentar i programmet.


Det giver mening. Jeg er bare ikke rutineret nok. Men jeg hentede
SQlite addin'et, som jeg lagde ind i VS2013, hvilket bragte mig et
stykke videre efter vel nok 4 timers læsning om det i dag.
Peter T. (22.02.2015, 10:51)
Den 21-02-2015 kl. 16:47 skrev Peter T.:
> Den 21-02-2015 kl. 14:55 skrev Arne Vajhøj:
> Det giver mening. Jeg er bare ikke rutineret nok. Men jeg hentede
> SQlite addin'et, som jeg lagde ind i VS2013, hvilket bragte mig et
> stykke videre efter vel nok 4 timers læsning om det i dag.


Jeg droppede bøvlet og brugte standarddatabasen (MDF) i VS2013 i aftes,
hvor det umiddelbart fungerer.

Men jeg har et par spørgsmål, som jeg ikke kan finde svar på.

Den første kolonne i et table, inderholder jo ID, hvor jeg har sat
increment til 1 (standardværdi?). I min opgave har jeg så laver 6
entries. De 4 første er ID lig med 1,2,3 og 4. De to sidste hedder 9
og 10. Der må ligge nogle tomme entries imellem fra 5 til 8. Hvordan
sletter jeg disse?

Opgaven tager udgangspunkt i VS2010. En standard SDF database ('local
database' under 'add new item...') indeholder åbenbart også kolonnen
Unique. Hvad gør denne?
Arne Vajhøj (22.02.2015, 15:10)
On 2/22/2015 3:51 AM, Peter T. wrote:
> Den 21-02-2015 kl. 16:47 skrev Peter T.:


> Jeg droppede bøvlet og brugte standarddatabasen (MDF) i VS2013 i aftes,
> hvor det umiddelbart fungerer.
> Men jeg har et par spørgsmål, som jeg ikke kan finde svar på.
> Den første kolonne i et table, inderholder jo ID, hvor jeg har sat
> increment til 1 (standardværdi?). I min opgave har jeg så laver 6
> entries. De 4 første er ID lig med 1,2,3 og 4. De to sidste hedder 9
> og 10. Der må ligge nogle tomme entries imellem fra 5 til 8. Hvordan
> sletter jeg disse?


Jeg tror ikke at der er nogle tomme entries.

Hvis du indsaetter nye raekker uden at angive en id, saa taeller
databasen op med 1.

Men hvis du selv indsaetter id eller hvis du sletter raekker, saa kan
du sagtens faa huller i id vaerdierne.

> Opgaven tager udgangspunkt i VS2010. En standard SDF database ('local
> database' under 'add new item...') indeholder åbenbart også kolonnen
> Unique. Hvad gør denne?


Jeg vil tro at den tilfoejer et unikt index til kolonnen d.v.s.
forhindrer raekker med samme vaerdi i feltet.

Arne
Peter T. (24.02.2015, 07:51)
Den 22-02-2015 kl. 14:10 skrev Arne Vajhøj:

> Jeg tror ikke at der er nogle tomme entries.
> Hvis du indsaetter nye raekker uden at angive en id, saa taeller
> databasen op med 1.
> Men hvis du selv indsaetter id eller hvis du sletter raekker, saa kan
> du sagtens faa huller i id vaerdierne.


Jeg valgte fra start, at sætte Increment med 1 (default), så ID selv
tæller. Derefter indtastede jeg data. Ved række 4 knurrede den dog
godt nok, da jeg havde tabbet et felt for langt, da jeg ville tilføje en
række og derfor havde overset en tom celle. Men ellers forstår jeg ikke
hvordan springet er opstået.

Er det muligt, at ændre i ID-værdien manuelt?

>> Opgaven tager udgangspunkt i VS2010. En standard SDF database ('local
>> database' under 'add new item...') indeholder åbenbart også kolonnen
>> Unique. Hvad gør denne?

> Jeg vil tro at den tilfoejer et unikt index til kolonnen d.v.s.
> forhindrer raekker med samme vaerdi i feltet.


Det er også min formodning.
Jens Peter Karlsen (24.02.2015, 18:18)
Da ID skal være unikt er det ikke muligt at ændre i værdien.

On Tue, 24 Feb 2015 06:51:26 +0100, "Peter T." <pinoc10>
wrote:
Arne Vajhøj (25.02.2015, 04:24)
On 2/24/2015 12:51 AM, Peter T. wrote:
> Den 22-02-2015 kl. 14:10 skrev Arne Vajhøj:
> Jeg valgte fra start, at sætte Increment med 1 (default), så ID selv
> tæller. Derefter indtastede jeg data. Ved række 4 knurrede den dog
> godt nok, da jeg havde tabbet et felt for langt, da jeg ville tilføje en
> række og derfor havde overset en tom celle. Men ellers forstår jeg ikke
> hvordan springet er opstået.
> Er det muligt, at ændre i ID-værdien manuelt?


Ja.

Men ingen grund til at spilde din tid på det.

Over tid vil der opstå huller af forskellige årsager.

Accepter det.

Arne
Arne Vajhøj (25.02.2015, 04:25)
On 2/24/2015 11:18 AM, Jens Peter Karlsen wrote:
> On Tue, 24 Feb 2015 06:51:26 +0100, "Peter T." <pinoc10>
> wrote:
>> Er det muligt, at ændre i ID-værdien manuelt?

> Da ID skal være unikt er det ikke muligt at ændre i værdien.


????

Du kan ikke ændre det til en værdi som allerede eksisterer, men
du kan godt ændre det til en værdi som ikke eksisterer.

Arne
Peter T. (25.02.2015, 11:58)
Den 25-02-2015 kl. 03:24 skrev Arne Vajhøj:

>> Er det muligt, at ændre i ID-værdien manuelt?

> Ja.
> Men ingen grund til at spilde din tid på det.
> Over tid vil der opstå huller af forskellige årsager.
> Accepter det.


Det gør jeg så. Tak. :)
Jens Peter Karlsen (26.02.2015, 19:40)
Jeg kan se at det faktisk kan lade sig gøre hvis man sætter
IDENTITY_INSERT on.
Men det vil ikke være nogen god ide da man risikerer dubletter.

Regards Jens Peter Karlsen.

On Tue, 24 Feb 2015 21:25:46 -0500, Arne Vajhøj <arne>
wrote:
Arne Vajhøj (26.02.2015, 20:30)
On 2/26/2015 12:40 PM, Jens Peter Karlsen wrote:
> Jeg kan se at det faktisk kan lade sig gøre hvis man sætter
> IDENTITY_INSERT on.
> Men det vil ikke være nogen god ide da man risikerer dubletter.


Nej.

Selv med IDENTITY_INSERT ON kan man ikke indsætte dubletter.

Arne
Jens Peter Karlsen (27.02.2015, 19:59)
Eftersom en ID kolonne ikke per automatik har unique sat vil dubletter
være muligt.

Citat fra Stackowerflow:
However, no UNIQUE constraint or UNIQUE index is automatically created
on IDENTITY column, and after issuing SET IDENTITY_INSERT ON it's
possible to insert duplicate values into an IDENTITY column, unless it
had been explicity UNIQUE constrained.

Regards Jens Peter Karlsen.

On Thu, 26 Feb 2015 13:30:12 -0500, Arne Vajhøj <arne>
wrote:
Arne Vajhøj (27.02.2015, 20:12)
On 2/27/2015 12:59 PM, Jens Peter Karlsen wrote:
> On Thu, 26 Feb 2015 13:30:12 -0500, Arne Vajhøj <arne>
> wrote:
>> Selv med IDENTITY_INSERT ON kan man ikke indsætte dubletter.

> Eftersom en ID kolonne ikke per automatik har unique sat vil dubletter
> være muligt.


Normalt vil en id kolonne med IDENTITY være primær nøgle og de i
det tilfælde er dubletter ikke mulige.

Hvis den id kolonne ikke er primærnøgle og ikke har et unikt
indeks, så har tabel tabel designeren lavet et design hvor id
ikke nødvendigvis er unikt, hvilket ikke er hvad man forventer
af et id. Men det er et design problem - ikke et problem med
at sætte IDENTITY_INSERT ON.

Arne
Lignende emner