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

Błąd przy próbie odczytania zakresu dat do wykresu

Object Storage Arubacloud
0 głosów
190 wizyt
pytanie zadane 14 grudnia 2022 w C# przez Mati336 Użytkownik (560 p.)

 Witam! Mam program oparty na C# i mysql. I teraz tak mam kod który mi na podstawie danych: wartosci(wartosc1) i daty (dataczas) rysuje wykres:

  string connection = "datasource=localhost;database=konfigurator;port=3306;username=root;password=''";
          
            MySqlConnection conDataBase = new MySqlConnection(connection);
            MySqlCommand cmdDatabase = new MySqlCommand("select * from param;", conDataBase);
            MySqlDataReader myReader;
            try
            {
                conDataBase.Open();
                myReader = cmdDatabase.ExecuteReader();
                while(myReader.Read())
                {
this.chart1.Series["wartosc1"].Points.AddXY(myReader.GetString("dataczas"), myReader.GetInt32("wartosc1"));
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

i jest OK
 
Problem jest gdy chce żeby wykres został narysowany na podstawie zakresu ustawionego pomiędzy dateTimePicker1 oraz dateTimePicker2:

 string connection = "datasource=localhost;database=konfigurator;port=3306;username=root;password=''";
          
            MySqlConnection conDataBase = new MySqlConnection(connection);
            MySqlCommand cmdDatabase = new MySqlCommand("select * from param;", conDataBase);
            MySqlDataReader myReader;
            try
            {
                conDataBase.Open();
                myReader = cmdDatabase.ExecuteReader();
                while(myReader.Read())
                {
this.chart1.Series["wartosc1"].Points.AddXY(myReader.GetString("select dataczas from tabela1 where data_i_czas between '" + this.dateTimePicker1.Text + "' AND '" + this.dateTimePicker2.Text + "'; "), myReader.GetInt32("wartosc1"));
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

Wyskakuje mi następujący błąd:
 
zapytanie jest OK bo wrzucałem je do MySQL Workbench. Cos pomieszane mam  w kodzie.

 

 

1 odpowiedź

0 głosów
odpowiedź 14 grudnia 2022 przez VBService Ekspert (253,420 p.)
edycja 14 grudnia 2022 przez VBService

Próbujesz wykonać zapytanie sql-owe na zwróconych już danych z bazy.

            MySqlConnection conDataBase = new MySqlConnection(connection);
            MySqlCommand cmdDatabase = new MySqlCommand("select * from param;", conDataBase);
            MySqlDataReader myReader;
            try
            {
                conDataBase.Open();
                myReader = cmdDatabase.ExecuteReader();
                while(myReader.Read())
                {
<span style="background-color:#ff8c00">...(myReader.GetString("select dataczas from tabela1 where data_i_czas between '" + this.dateTimePicker1.Text + "' AND '" + this.dateTimePicker2.Text + "'; "), myReader.GetInt32("wartosc1"));</span>
                }
select dataczas from tabela1 where data_i_czas between ' ...

 

wstaw go do

...
string sql = "SELECT dataczas FROM tabela1 WHERE data_i_czas BETWEEN '" + this.dateTimePicker1.Text + "' AND '" + this.dateTimePicker2.Text + "'";
MySqlCommand cmdDatabase = new MySqlCommand(sql, conDataBase);
...

 

komentarz 14 grudnia 2022 przez Mati336 Użytkownik (560 p.)

niestety coś dalej nie tak :(

wstawiłem i mam:

private void button9_Click(object sender, EventArgs e)
        {
			string connection = "datasource=localhost;database=konfigurator;port=3306;username=root;password=''";
            string sql = "SELECT dataczas FROM tabela1 WHERE dataczas BETWEEN '" + this.dateTimePicker1.Text + "' AND '" + this.dateTimePicker2.Text + "'; ";

            MySqlConnection conDataBase = new MySqlConnection(connection);
            MySqlCommand cmdDatabase = new MySqlCommand(sql, conDataBase);
            MySqlDataReader myReader;
			
            try
            {
                conDataBase.Open();
                myReader = cmdDatabase.ExecuteReader();
                while(myReader.Read())
                {
                     this.chart1.Series["wartosc1"].Points.AddXY(myReader.GetString(sql), myReader.GetInt32("wartosc1"));

                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

i znowu komunikat:

Could not find specified column in resulta: SELECT dataczas FROM tabela1 WHERE dataczas BETWEEN '2022-11-01 20:35:55' AND '2022-12-14 20:35:55';

komentarz 14 grudnia 2022 przez VBService Ekspert (253,420 p.)
edycja 14 grudnia 2022 przez VBService

Musisz użyć tak jak to zrobiłeś w pierwszej wersji kodu czyli

string connection = "datasource=localhost;database=konfigurator;port=3306;username=root;password=''";
string sql = "SELECT dataczas FROM tabela1 WHERE dataczas BETWEEN '" + this.dateTimePicker1.Text + "' AND '" + this.dateTimePicker2.Text + "'; ";
 
MySqlConnection conDataBase = new MySqlConnection(connection);
MySqlCommand cmdDatabase = new MySqlCommand(sql, conDataBase);
MySqlDataReader myReader;
try
{
    conDataBase.Open();
    myReader = cmdDatabase.ExecuteReader();
    while(myReader.Read())
    {
        <span style="background-color:#ff8c00">this.chart1.Series["wartosc1"].Points.AddXY(myReader.GetString("dataczas"), myReader.GetInt32("wartosc1"));</span>
    }
 }
 catch(Exception ex)
 {
    MessageBox.Show(ex.Message);
 }

 

1
komentarz 14 grudnia 2022 przez Mati336 Użytkownik (560 p.)
Kurcze faktycznie! Dzięki wielkie VBService !

Podobne pytania

0 głosów
1 odpowiedź 159 wizyt
pytanie zadane 27 sierpnia 2019 w C# przez Moras Obywatel (1,620 p.)
0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 31 października 2019 w SQL, bazy danych przez jared Gaduła (3,600 p.)
0 głosów
1 odpowiedź 3,176 wizyt
pytanie zadane 15 sierpnia 2017 w SQL, bazy danych przez szejmys Nowicjusz (160 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...