Insert MYSQL

W1
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:60
0

Witam,
mam problem z wstawieniem danych do bazy MYSQL.

Kopiuj
string StrQuery1;
            try
            {
                
                using (MySqlConnection conn1 = new MySqlConnection(connectionString))
                {
                    using (MySqlCommand comm1 = new MySqlCommand())
                    {
                        
                        comm1.Connection = conn1;
                        conn1.Open();
                        comm1.Parameters.AddWithValue("@d_wy", DateTime.Today);
                        comm1.Parameters.AddWithValue("@d_wa", dateTimePicker_oferta_datawaznoscioferty.Value.Date);
                        comm1.Parameters.AddWithValue("@im_kl", comboBox_oferta_klient_imienazwisko.Text);
                        comm1.Parameters.AddWithValue("@na_fir_kl", comboBox_oferta_klient_nazwafirmy.Text);
                        comm1.Parameters.AddWithValue("@im_pr", comboBox_imie_pracownika.Text);
                        comm1.Parameters.AddWithValue("@ma_pr",textBox_mail_pracownika.Text);
                        comm1.Parameters.AddWithValue("@tl_pr",textBox_tel_pracownika.Text);
                        comm1.Parameters.AddWithValue("@ty_of",textBox_tytuloferty.Text);
                        comm1.Parameters.AddWithValue("@ce_net_wsz",textBox_oferta_cenanettolacznie.Text);
                        comm1.Parameters.AddWithValue("@ce_bru_wsz",textBox_oferta_cenabruttolacznie.Text);
                        
                        for (int j = 0; j < dataGridView_oferta.Rows.Count - 1; j++)
                        {
                            StrQuery1 = @"INSERT INTO current (d_wy , d_wa , im_kl , na_fir_kl , im_pr ,ma_pr, tl_pr , ty_of , na_pro , il , ce_net_szt , ce_net_lac , ce_net_wsz , ce_bru_wsz) VALUES (@d_wy , @d_wa , @im_kl , @na_fir_kl , @im_pr ,@ma_pr , @tl_pr , @ty_of , '" + dataGridView_oferta.Rows[j].Cells["Opis"].Value + "','" + dataGridView_oferta.Rows[j].Cells["Ilosc"].Value + "','" + Convert.ToString(dataGridView_oferta.Rows[j].Cells["CenaNettoSzt"].Value).Replace(',', '.') + "','" + Convert.ToString(dataGridView_oferta.Rows[j].Cells["CenaNettoLacznie"].Value).Replace(',', '.') + "';";
                            comm1.CommandText = StrQuery1;
                            comm1.ExecuteNonQuery();
                        }
                        conn1.Close();
                    }
                }
                
            }

Dostaje błąd, że jest problem w linijce w której jest insert.

HI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 19 godzin
  • Postów:1857
0

Załóż breakpointa na linijkę comm1.CommandText = StrQuery1; i pokaż co masz w StrQuery1.
Dobrze by było gdybyś zdradził strukturę tej tabeli.

edytowany 2x, ostatnio: hipekk
W1
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:60
0

"INSERT INTO current_off (d_wy , d_wa , im_kl , na_fir_kl , im_pr ,ma_pr, tl_pr , ty_of , na_pro , il , ce_net_szt , ce_net_lac , ce_net_wsz , ce_bru_wsz) VALUES (@d_wy , @d_wa , @im_kl , @na_fir_kl , @im_pr ,@ma_pr , @tl_pr , @ty_of , 'Komputer','2','2.22','4.44',@ce_net_wsz,@ce_bru_wsz;"

To jest zawartość StrQuery1

HI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 19 godzin
  • Postów:1857
0

Pierwsze co rzuciło mi się w oczy to brak nawiasu zamykającego.

Czemu nie przekażesz wartości w pętli przez parametry tylko bawisz się z replace?

W1
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:60
0

Faktycznie ... teraz działa. Nie za bardzo rozumiem o co Ci chodzi. replace używam, ponieważ z C# jest przekazywana wartość 4,44, a mysql ogarnia to jako 4.00 więc muszę zamienić przecinek na kropkę by mysql wziął to jako 4.44.

HI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 19 godzin
  • Postów:1857
0

Nie musisz :).

Coś takiego możesz zrobić (pisane w notatniku, więc mogą być błędy).
```csharp
try
{
using (MySqlConnection conn1 = new MySqlConnection(connectionString))
{
using (MySqlCommand comm1 = new MySqlCommand())
{

                    comm1.Connection = conn1;
                    conn1.Open();
                    comm1.Parameters.AddWithValue("@d_wy", DateTime.Today);
                    comm1.Parameters.AddWithValue("@d_wa", dateTimePicker_oferta_datawaznoscioferty.Value.Date);
                    comm1.Parameters.AddWithValue("@im_kl", comboBox_oferta_klient_imienazwisko.Text);
                    comm1.Parameters.AddWithValue("@na_fir_kl", comboBox_oferta_klient_nazwafirmy.Text);
                    comm1.Parameters.AddWithValue("@im_pr", comboBox_imie_pracownika.Text);
                    comm1.Parameters.AddWithValue("@ma_pr",textBox_mail_pracownika.Text);
                    comm1.Parameters.AddWithValue("@tl_pr",textBox_tel_pracownika.Text);
                    comm1.Parameters.AddWithValue("@ty_of",textBox_tytuloferty.Text);
                    comm1.Parameters.AddWithValue("@ce_net_wsz",textBox_oferta_cenanettolacznie.Text);
                    comm1.Parameters.AddWithValue("@ce_bru_wsz",textBox_oferta_cenabruttolacznie.Text);
                    comm1.Parameters.Add("@cenaNettoSztuka", SqlDbType.Real);
                    for (int j = 0; j < dataGridView_oferta.Rows.Count - 1; j++)
                    {
                        StrQuery1 = @" INSERT INTO current (d_wy , d_wa , im_kl , na_fir_kl , im_pr ,ma_pr, tl_pr , ty_of , na_pro , il , ce_net_szt , ce_net_lac , ce_net_wsz , ce_bru_wsz) VALUES (@d_wy , @d_wa , @im_kl , @na_fir_kl , @im_pr ,@ma_pr , @tl_pr , @ty_of , '" + dataGridView_oferta.Rows[j].Cells["Opis"].Value + "','" + dataGridView_oferta.Rows[j].Cells["Ilosc"].Value + ", @cenaNettoSztuka, "+ Convert.ToString(dataGridView_oferta.Rows[j].Cells["CenaNettoLacznie"].Value).Replace(',', '.') + "';";
                        comm1.Parameters["@cenaNettoSztuka"] = Convert.ToDouble(dataGridView_oferta.Rows[j].Cells["CenaNettoSzt"].Value);
                        comm1.CommandText = StrQuery1;
                        comm1.ExecuteNonQuery();
                    }
                    conn1.Close();
                }
            } 
        }
Kopiuj
W1
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:60
0

Dzięki, jak tylko uporam się z tworzeniem PDF z danymi z bazy MYSQL, to przetestuję to rozwiązanie.

WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:około 7 godzin
  • Postów:5138
0

To musi tak być zrobione? nie można po prostu użyć interpolacji stringów i heja?

edytowany 1x, ostatnio: WeiXiao
JP
Co to jest interpelacja strimgow?
JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:1065
0

OT. To wygląda jak ladowanie danych z jakiegoś excela do sqla. Ja bym zrobił osobny model do odczytu z xlsx i z tego modelu ladowal do sqla.

WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:około 7 godzin
  • Postów:5138
0

@jacek.placek:

Kopiuj
int temperature = 20;
string location_of_my_house = "xyz";

string output = $"My super house is located at {location_of_my_house} and current temperature inside is: {temperature}";
edytowany 6x, ostatnio: WeiXiao
JP
Aha. Nie wiedziałem że to sie tak nazywa. To raczej nie zadziała z liczbami bo powstawia przecinki w domyslnych ustawieniach windows A dla bedziebchcial kropek jako znaków dziesietnych.
W2
  • Rejestracja:ponad 19 lat
  • Ostatnio:18 dni
1
WeiXiao napisał(a):

To musi tak być zrobione? nie można po prostu użyć interpolacji stringów i heja?

Hmmm, Kolega słyszał o SQL injection ?

WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:około 7 godzin
  • Postów:5138
0
W2K napisał(a):
WeiXiao napisał(a):

To musi tak być zrobione? nie można po prostu użyć interpolacji stringów i heja?

Hmmm, Kolega słyszał o SQL injection ?

Kopiuj
comm1.Parameters.AddWithValue("@im_kl", comboBox_oferta_klient_imienazwisko.Text);
string StrQuery1 = "";
comm1.CommandText = StrQuery1;

Ten sposób zapobiega?

#Edit najwidoczniej tak, dzięki

myślałem, że to tylko wstawianie wartości

edytowany 4x, ostatnio: WeiXiao

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.