Flere columns end values????

Tags:    asp.net

Hej..

Jeg har lavet følgende kode der skulle indsætte noget i min databbase.. Men af en eller anden grund jeg ikke kan se kommer der altså denne fejlmeddelelse som jeg ikke rigtig kan forstå.

Umiddelbart troede jeg jeg havde kommet til at smide nogle flere ting ind end der var felter til i databasen, men det ser det ikke ud til at være..

Så nu har jeg efterhånden stirret på den kode så længe at jeg må have stirret mig blind på et eller andet. Håber i kan hjælpe

Code Behind:
Fold kodeboks ind/udKode 



Fejlmeddelelse:

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 19.09.2008 01:42 af Bruger #11545




Indlæg senest redigeret d. 29.09.2008 11:51 af Bruger #13985
>Ved heller ikke hvor du får konklusionen med flere columns end values, men jeg er mere intereseret i, hvorfor du konverterer et SQL object til String?

Det gør han heller ikke - ToString() bliver kaldt på det specifikke item i ConnectionStrings collection :)

Andreas, du har sat ALLE dine værdier inden for ét sæt quotes, hvilket i så fald bliver opfattet som én værdi, så ud fra det kan du godt have ret i at der er flere feltnavne end værdier ;). Put hver enkelt værdi i sine egne quotes, med mindre det ikke er en tekst streng.

Mvh.

Kasper (TSW)



Indlæg senest redigeret d. 19.09.2008 09:51 af Bruger #1




Indlæg senest redigeret d. 29.09.2008 11:51 af Bruger #13985
Hehe hvad gør forskellen imellem VB.NET og C# i den forbindelse, Ronnie?

Mvh.

Kasper (TSW)







Indlæg senest redigeret d. 29.09.2008 11:52 af Bruger #13985
Mig bekendt er ADO.NET blot en fællesbetegnelse for de data providers der er i .NET frameworket, hvor der er et sæt klasser for hver slags database forbindelse der er understøttet, som kan de samme ting. Her er Sql* klasserne et eksempel, fx SqlConnection og SqlCommand. OdbcConnection og OdbcCommand er et andet eksempel. Læser man fra en MSSQL database bør man klart bruge Sql* klasserne, da de utvivlsomt giver den bedste performance. Derudover er SQL dialekterne ikke ens nok til at man blot kan skrive en række SQL queries og forvente at de kan afvikles 100% ens på fx MSSQL og MySQL. Ønsker man pludselig at ændre sin database backend fra MSSQL til MySQL eller omvendt, så har man større problemer end at udskifte sine Sql* klasser med tilsvarende Odbc* klasser - den del kan i det mindste klares med simpel search & replace refactoring ;)

Mvh.

Kasper (TSW)



Indlæg senest redigeret d. 19.09.2008 10:40 af Bruger #1




Indlæg senest redigeret d. 29.09.2008 11:52 af Bruger #13985
Ronnie, okay, men ODBC er jo altså ikke det samme som ADO.NET :). ODBC klasserne er en del af ADO.NET, lige så vel som Sql* klasserne er. Jeg vil vove den påstand at hvis du bruger ODBC klasser til at tilgå en MSSQL server, så mister du performance i en eller anden grad, da du går igennem et par lag mere. Derudover er jeg sikker på at MS har optimeret Sql klasserne så de kører bedst muligt op imod MSSQL server :). Og igen: SQL dialekterne er ikke ens, så du slipper ikke for at ændre på ting hvis du skifter din database ud med en anden.

Jeg har i øvrigt også skrevet mit eget lille DB framework, hvilket er helt fint og uhyre praktisk - det ændrer blot ikke meget på ovenstående, bortset fra at jeg skal erstatte Sql* med Odbc* en del færre steder hvis jeg skifter fra MSSQL til MySQL - derefter skal jeg så i gang med at tjekke queries ;)

Mvh.

Kasper (TSW)







Indlæg senest redigeret d. 29.09.2008 11:52 af Bruger #13985
Det er smart hvis ODBC kan oversætte din SQL så den virker begge steder - er det virkelig tilfældet? Det ændrer dog ikke på at du med ODBC går igennem flere lag, der bruger mere generisk kode, end hvis du bruger Sql* klasserne direkte, så alt andet lige vil der være performanceforskelle. Hvor store de er ved jeg dog ærlig talt ikke :). Jeg ville stadig klart bruge Sql* klasserne så længe jeg snakker med en MSSQL server!

Jeg har øvrigt på intet tidspunkt påstået at ODBC er langsomt, blot at det af gode grunde ikke kan være lige så hurtigt som hvis du går den direkte vej. Jeg vil skyde på at det også gælder for PHP :)

>Ang. DB framework/class, mente jeg at du har de funktioner der inderholder selve din query (en til Select, en anden til Delete osv.). Altså køres funktionen med de parametre der skal indsættes; dvs. at du kan ændre alle dine queries på en gang, ved at ændre funktionerne. Det kræver at man lige overvejer klassen først, men det fungerer altså når det først er lavet. Det kan selvfølgelig også bruges sammen med ODBC, så er man så fremtidssikret som man nu engang kan være.

Jeg tror ikke helt jeg forstår hvad du mener her - kan du give et eksempel? Det kunne da være interessant at se :)

Mvh.

Kasper (TSW)



t