Welcome to Sign in | Help
in Search

Probleme la transmiterea datelor din C# in Sql Server 2005

Last post 06-06-2007, 4:20 PM by crestinul. 8 replies.
Sort Posts: Previous Next
  •  05-30-2007, 6:29 PM 1988

    Probleme la transmiterea datelor din C# in Sql Server 2005

    Am in baza de date un camp "versiune" de tip float.In C# cand mapez baza de date acesta este de tip double.Problemele mele apar cand vreau sa il aduc din baza de date,sa cresc acest camp versiune si sa il inserez din nou in baza de date.De exemplu daca in baza de date am versiunea 1.1 .imi aduc aceasta valaore;ii atribui versiune+=0.1 si fac un update ptr acest camp in baza de date.Dar in loc sa imi puna 1.2 imi pune ceva de genul 1.20000002384186.Asta se intampla si cand inserez .cand ii atribui de exemplu versiune=1.1.in baza de date pune 1.1000000238418579.Imi poate spune cineva de ce imi apare aceasta problema si de ce nu imi pune o singura cifra dupa virgula.Ce am citit pe internet pentru un camp float din sql server in C# se pune double!!!
  •  05-30-2007, 7:08 PM 1989 in reply to 1988

    Re: Probleme la transmiterea datelor din C# in Sql Server 2005

    Folosesti ado.net cu providerul de sqlserver 2005 nu?

     


    Secolul XXI ori va fi religios ori nu va fi deloc
  •  05-30-2007, 7:21 PM 1990 in reply to 1989

    Re: Probleme la transmiterea datelor din C# in Sql Server 2005

    Da.Baza e construita pe nivele Vo,Dal!!!
  •  05-30-2007, 7:33 PM 1991 in reply to 1990

    Re: Probleme la transmiterea datelor din C# in Sql Server 2005

    Ciudat incearca sa faci fieldu in bd d etip double iar variabila c# ,in care preiei campul din bd de tipul doouble.Nu am avut probleme cu sqlprovider,din experieta mea de pana acu.
    Secolul XXI ori va fi religios ori nu va fi deloc
  •  05-30-2007, 7:50 PM 1992 in reply to 1991

    Re: Probleme la transmiterea datelor din C# in Sql Server 2005

    Problema e ca in sql server nu exista tipul double.Pot pune ori float ori real.Ptr float am in C# double iar ptr real Single.Dar de ce nu imi pune exact cum trimit.De preluat preia bine.Am incercat cu niste message boxuri si afiseaza axact 1.1,1.2 dar cand insereaza in baza pune tot sirul acela prezentat mai sus!!
  •  05-30-2007, 8:13 PM 1993 in reply to 1988

    Re: Probleme la transmiterea datelor din C# in Sql Server 2005

    Dacă e vorba de o coloană numită "versiune", atunci recomand tipul de date decimal(6,3) sau poate chiar un varchar(10). Tipul decimal(6,3) sau sinonimul său, numeric(6,3), ar permite 6 cifre, dintre care 3 zecimale, fiind stocat intern în baza 10. Tipul float ar permite valori mult mai variate (foarte mici sau foarte mari) şi ar fi potrivit pentru valori ale unor mărimi fizice (de exemplu) sau pentru calcule matematice trigonometrice, radicali, logaritmi, etc. Dar fiind stocat intern în baza 2, tipul float nu poate reprezenta exact multe valori care în baza 10 sunt exacte. Problema aceasta apare la majoritatea tipurilor de date ne-întregi şi la majoritatea limbajelor, însă de obicei nu e vizibilă deoarece la conversia înapoi în baza 10 se omit ultimii biţi, astfel încât se afişează o valoare rotunjită, care e deseori exact cea aşteptată.

    Răzvan

  •  05-30-2007, 8:35 PM 1994 in reply to 1993

    Re: Probleme la transmiterea datelor din C# in Sql Server 2005

    ...iar pentru tipurile SQL "decimal(p, s)", "numeric(p, s)" si "money" in C# ar corespunde  "decimal"...

    * Daca in C# folosesti SqlDataReader, ai metode ca de ex. GetDecimal pentru a "intoarce" valoarea unui camp din tablel ca"decimal"...

  •  05-31-2007, 4:16 PM 1998 in reply to 1993

    Re: Probleme la transmiterea datelor din C# in Sql Server 2005

    Multumesc de ajutor!!!I-am dat de cap pana la urma!!!Se retine in baza de date nvarchar.Cand il aduc in C# fac o conversie la un double fac adunarea cu 0.1 si cand il inserez din nou fac conversia la string.
  •  06-06-2007, 4:20 PM 2034 in reply to 1998

    Re: Probleme la transmiterea datelor din C# in Sql Server 2005

    cosmin221:
    Multumesc de ajutor!!!I-am dat de cap pana la urma!!!Se retine in baza de date nvarchar.Cand il aduc in C# fac o conversie la un double fac adunarea cu 0.1 si cand il inserez din nou fac conversia la string.

    Daca folosesti decimal si in c# sin in sql nu merge ca tipul asta exista in amandoua limbajele?


    Secolul XXI ori va fi religios ori nu va fi deloc
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems