• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C#][SQL] Problem z liczbami zmiennoprzecinkowymi double

0 głosów
312 wizyt
pytanie zadane 18 listopada 2015 w C# przez Artur Zegarek Nowicjusz (120 p.)
Witam. Mam problem z zapisem liczby double/decimal do bazy danych już sam nie wiem co robię źle...  Problem polega na tym że gdy za pomocą textBox pobieram wartość następnie konwertuje ją do double jeśli wpisze 2.55 oczywiście wywala mi błąd.... błędna wartość double... Ok podaje 2,55 (przecinek)... przechodzi dochodzi do zapisu (2,55) Error mój TSQL wymaga formatu 2.55? WTF?
Część Kodu: *Część kodu usunąłem ograniczenie liczby znaków :(

namespace WindowsFormsApplication2.Presenter
{
    class MainPresenter
    {
        IMain View { get; set; }
        public MainPresenter(IMain pView)
        {
            View = pView;
            View.GetTime += pView_GetTime;
            View.GetTyp += View_GetTyp;
            View.GetKlient += View_GetKlient;
            View.ClearTextBox_klient += View_clear_textbox_add_klient;
            View.ClearTextBox_film += View_clear_textbox_add_film;
            View.DelKlient += View_Del_Klient;
            View.AddKlient += AddKlientToDB;
            View.AddFilm += AddFilmToDB;
            View.GetNosnik += View_Get_Nosnik;
            View.GetKategorie += View_Get_Kategorie;
            View.GetFilm += View_GetFilm;
            View.DelFilm += View_Del_Film;
        }

        public SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Artur\Desktop\WindowsFormsApplication2\WindowsFormsApplication2\Model\DB_wyp.mdf;Integrated Security=True");
        void db_Conect(string db_Comand_string)
        {
            SqlConnection conextx = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Artur\Desktop\WindowsFormsApplication2\WindowsFormsApplication2\Model\DB_wyp.mdf;Integrated Security=True");
            conextx.Open();
            SqlCommand db_Comand = new SqlCommand();
            db_Comand.Connection = conextx;
            db_Comand.CommandText = db_Comand_string;
            db_Comand.ExecuteReader();
            db_Comand.Cancel();
            conextx.Close();
        }

        
        void View_GetFilm()
        {

            #region Połązcnie z bazą danych
            SqlConnection DB_Wypconn = new SqlConnection();
            DB_Wypconn.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Artur\Desktop\WindowsFormsApplication2\WindowsFormsApplication2\Model\DB_wyp.mdf;Integrated Security=True";
            DB_Wypconn.Open();
            SqlCommand DB_Wypcommand = new SqlCommand();
            DB_Wypcommand.Connection = DB_Wypconn;
            DB_Wypcommand.CommandText = "SELECT * FROM Filmy";
            SqlDataReader reader = DB_Wypcommand.ExecuteReader();
            #endregion
            while (reader.Read())
            {
                ListViewItem _film = new ListViewItem(reader.GetInt32(0).ToString().Trim());
                _film.SubItems.Add(reader.GetValue(1).ToString().Trim());
                _film.SubItems.Add(reader.GetValue(2).ToString().Trim());
                _film.SubItems.Add(reader.GetValue(3).ToString().Trim());
                string cena = reader.GetValue(4).ToString();
                _film.SubItems.Add(""+ string.Format("{0:n}", cena));

               View.FillGetFilm(_film);
            }
            reader.Close();
            DB_Wypconn.Close();
        }

        void AddKlientToDB()
        {
            #region CheckData
            bool state;
            string ewent_text = "";
            string text_ok = "Dodawanie użydkownika zakończone sukcesem ";
            if (View.vTextBox1 != " " && View.vTextBox1 != "" && View.vTextBox1 != null) { state = true; ewent_text = text_ok; } else { state = false; ewent_text += "Pole Imie nie moze byc puste! \r\n"; }
            if (View.vTextBox2 != " " && View.vTextBox2 != "" && View.vTextBox2 != null) { if (state) { state = true; ewent_text = text_ok; } else state = false; } else { state = false; ewent_text += "Pole Nazwisko nie moze byc puste! \r\n"; }
            if (View.vTextBox3 != " " && View.vTextBox3 != "" && View.vTextBox3 != null) { if (state) { state = true; ewent_text = text_ok; } else state = false; } else { state = false; ewent_text += "Pole Ulica nie moze byc puste! \r\n"; }
            if (View.vTextBox4 != " " && View.vTextBox4 != "" && View.vTextBox4 != null) { if (state) { state = true; ewent_text = text_ok; } else state = false; } else { state = false; ewent_text += "Pole Numer domu nie moze byc puste! \r\n"; }
            if (View.vTextBox5 != " " && View.vTextBox5 != "" && View.vTextBox5 != null) { if (state) { state = true; ewent_text = text_ok; } else state = false; } else { state = false; ewent_text += "Pole Kod pocztowy nie moze byc puste! \r\n"; }
            if (View.vTextBox6 != " " && View.vTextBox6 != "" && View.vTextBox6 != null) { if (state) { state = true; ewent_text = text_ok; } else state = false; } else { state = false; ewent_text += "Pole Kod pocztowy nie moze byc puste! \r\n"; }
            if (View.vTextBox7 != " " && View.vTextBox7 != "" && View.vTextBox7 != null) { if (state) { state = true; ewent_text = text_ok; } else state = false; } else { state = false; ewent_text += "Pole Miejscowość nie moze byc puste! \r\n"; }
           
            #endregion
            if (state)
            {
                db_Conect("insert into  Klienci(Imie, Nazwisko, Ulica_nr_domu, Kod_Pocztowy, Miejscowosc, Nr_telefonu, Nr_dowodu) values('"+
                    View.vTextBox1 + "','" +
                    View.vTextBox2 + "','" +
                    View.vTextBox3 + " " + View.vTextBox4 + "','"+
                    View.vTextBox5 + "-" + View.vTextBox6 + "','"+
                    View.vTextBox7 + "','" +
                    View.vTextBox8 + "','" +
                    View.vTextBox9 + " " + View.vTextBox10 + "')");
                Refresh_Klient();
                View_clear_textbox_add_klient();
            }
            View_Mesage_Klient_State(state, ewent_text);
        }

        void AddFilmToDB()
        {

            #region CheckData
            bool state;
            string ewent_text = "";
            string text_ok = "Dodawanie filmu zakończone sukcesem";
            if (View.vTextBox11 != " " && View.vTextBox11 != "" ) { state = true; } else { state = false; ewent_text += "Pole Tytuł nie może być puste! \r\n"; }
            if (View.index_combox1 != 0) { if (state) { state = true; ewent_text = text_ok; } else state = false; } else { state = false; ewent_text += "Proszę wybrać nośnik \r\n"; }
            if (View.index_combox2 != 0) { if (state) { state = true; ewent_text = text_ok; } else state = false; } else { state = false; ewent_text += "Proszę wybrać gatunek \r\n"; }
            if (View.vTextBox12 != " " && View.vTextBox12 != "" ) { if (state) { state = true; ewent_text = text_ok; } else state = false; } else { state = false; ewent_text += "Pole Cena nie moze byc puste! \r\n"; }

            try
            {
                // Convert.ToDouble(View.vTextBox12);
                 double.Parse(View.vTextBox12);
              // decimal a = decimal.Parse(View.vTextBox12);
                //decimal q = decimal.Parse(View.vTextBox12.Trim());

            }
            catch (FormatException)
            {
                state = false;
                ewent_text += "Cena musi składać się z wyłącznie z cyfr \r\n";          
            }

            #endregion
            if (state)
            {
                double cena_double = double.Parse(View.vTextBox12);
                cena_double  *= 100;
                int cena = (int)cena_double;
                db_Conect("insert into  Filmy(Tytul, Nosnik, Gatunek, Cena) values('" +
                View.vTextBox11 + "','" +
                View.name_combox1 + "','" +
                View.name_combox2 + "','"+
                cena + "')");
                
                Refresh_Film();
                View_clear_textbox_add_film();
            }
            View_Mesage_Klient_State(state, ewent_text);
        }
    }
}

2 odpowiedzi

+1 głos
odpowiedź 19 listopada 2015 przez niezalogowany

Zmień opcje regionalne w programie:

System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
customCulture.NumberFormat.NumberDecimalSeparator = ".";

System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;

 

link

komentarz 20 listopada 2015 przez Artur Zegarek Nowicjusz (120 p.)
Super. Dziękuje ;) po dodaniu kodu wszystko działa. :)
0 głosów
odpowiedź 18 listopada 2015 przez Boulderdash Początkujący (420 p.)
Bądź tak dobry i wklej ten kod na http://pastebin.com/
Byłoby wygodniej go czytać :)
komentarz 18 listopada 2015 przez Artur Zegarek Nowicjusz (120 p.)
Ok link do kodu. Problem rozwiązałem przez zapis do bazy w postaci int'a ale cały czas mnie to męczy....

http://pastebin.com/UFE2V96B

Podobne pytania

+1 głos
0 odpowiedzi 552 wizyt
pytanie zadane 15 lutego 2022 w C# przez Patryk665 Nowicjusz (170 p.)
+1 głos
2 odpowiedzi 1,424 wizyt
pytanie zadane 9 kwietnia 2021 w C# przez kubaa322 Użytkownik (710 p.)
0 głosów
0 odpowiedzi 1,022 wizyt
pytanie zadane 17 lutego 2021 w C# przez disaster Bywalec (2,120 p.)

93,721 zapytań

142,649 odpowiedzi

323,266 komentarzy

63,270 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...