01. september 2006 - 10:23Der er
35 kommentarer og 1 løsning
skrivning af kommatal til database
Hej jeg har lavet en Asp.Net application som skriver til en microsoft sql database. men jeg har problemer med at skrive et decimal tal til et felt der er sat til at være decimal tal. Jeg får fejlen at der er for mange values i forhold til min insert sætning.
Fejlen er vel an det ikke kan finde ud af at nogle af kommaerne høre til komma tallet og ikke skiller to values, men hvad gør jeg så. De to komma tal er 1,25 og 2,35
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
SQL-injection er et angreb fra Joe-the-Hacker som går ud på at han indsætter stumper af ondsinget SQL-kode i et af dine tekst-felter. Hvis du bare tager teksten råt fra dine indtsatningsfelter og indsætter dem i din SQL-streng, kan du dermed få dannet et stykke SQL som sletter din database, eller som tilføjer Joe som administrator til dit site.
Hvis du får en fejl med for mange paramener med SQL'en fra 01/09-2006 10:52:27 så er det ikke ',' vs. '.' den er galt med - så er det et af dine andre felter der svipser.
Prøv at lade dit program om at udskrive den færdige SQL lige inden at du forsøger at udføre den. Post den så her sådan at vi kan se resultatet.
Ok, men det burde stadig kunne lade sig gøre at indsætte det decimal tal direkte, det virker ikke engang selvom jeg bare skriver et decimal tal og ikke en variabel, i ovenstående eksempel har jeg jo brugt 2,25 og 2.25, det burde kunne lade sig gøre på den ene elle´r anden måde
Problemet med at sætte det ind direkte, er at .Net så skal lave en konvertering fra float til string. Under denne konvertering forventer .Net at du ønsker dit tal repræsenteret på dansk format, og derfor ændre den decimal-punktummet til et dabsk decimal-komma.
Det gør den fordi at den forventer at du ønsker at udskrive tallet i en tekst-sammenhæng. Dette er en normalt rimelig antagelse, men .Net er desværre ikke klar over at det er en rigtig dårlig ide i lige det konkrete tilfælde, da du jo skal bruge det i en SQL-sætning.
Hvis du bruger Parameters så ved .Net at det er en SQL-sammenhæng der er tale om, og så behandler den floats derefter.
Error 3 The best overloaded method match for 'System.Web.UI.WebControls.ParameterCollection.Add(string, string)' has some invalid arguments c:\inetpub\wwwroot\Registrering.aspx.cs 215 9 http://localhost/ Error 4 Argument '2': cannot convert from 'System.Data.SqlDbType' to 'string' c:\inetpub\wwwroot\Registrering.aspx.cs 215 57 http://localhost/ Error 5 'System.Web.UI.WebControls.Parameter' does not contain a definition for 'Value' c:\inetpub\wwwroot\Registrering.aspx.cs 216 53 http://localhost/ Error 6 The best overloaded method match for 'System.Web.UI.WebControls.ParameterCollection.Add(string, string)' has some invalid arguments c:\inetpub\wwwroot\Registrering.aspx.cs 217 9 http://localhost/ Error 7 Argument '2': cannot convert from 'System.Data.SqlDbType' to 'string' c:\inetpub\wwwroot\Registrering.aspx.cs 217 58 http://localhost/ Error 8 'System.Web.UI.WebControls.Parameter' does not contain a definition for 'Value' c:\inetpub\wwwroot\Registrering.aspx.cs 218 54 http://localhost/
ERROR [21S01] [Microsoft][ODBC SQL Server Driver][SQL Server]There are more columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
Jeg har ikke skullet skrive noget i aspx-filen for at få det til at virke. Ud over at de relevante kontroller selvfølgeligt skal være på siden, så er det rent code-behind.
Det kunne jo være at det var det der skulle til (godt nok virkede det ikke for mig, så det er lidt et bud i blinde, men det var den kode jeg selv startede med).
Det hjælper ikke at sætte @ foran det har jeg prøvet, Grunden til at jeg bruger odbc er at sql databasen ligger på en server som jeg kun har rettigheder til gennem odbc
Jeg har fået opsat min datasource uden odbc men som sql client nu virker det så smid et svar for hele dit arbejde omkring parameters så får du dine point
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.