matematykaszkolna.pl
c++ Hugo: 9 dni żeby ogarnąć c++ podstawy do wskaźników dużo czy mało
4 sty 01:32
razor: jeśli chodzi o zaliczenie kolosa to dużo emotka
4 sty 01:33
Hugo: na 5.0 naprawdę podstawy Hugusiowi zalezy na tymemotka
4 sty 01:36
Hugo: a Ty razor ogarniasz ?
4 sty 01:36
razor: w miarę emotka
4 sty 01:37
Hugo: To podszkol Hugusia emotka
4 sty 01:39
asdf: pisz czego nie wiesz
4 sty 01:41
Hugo: asdf ja mam problem z podstawami, źle z Hugusiem bo pozapominał pętlę, tablice, wskaźnikiemotka
4 sty 01:43
jakubs: No to łap za jakąś pozycje i czytaj.
4 sty 01:43
asdf: pisz normalnie, a nie opisujesz siebie w 3 osobie... pętle − co tu nie rozumiesz?
4 sty 01:43
Hugo: czytałem symfonię... No np taki program rysujący takie coś ********************** * * * * **********************
4 sty 01:45
asdf: może być z operatorem modulo, czy się pogubisz?
4 sty 01:46
Hugo: modulo to reszt z dzielenie % ? to wiem
4 sty 01:49
asdf: http://pastebin.com/TF5MDWif nie sprawdzalem, tak z glowy.
4 sty 01:51
asdf: czekaj, blad.
4 sty 01:52
4 sty 01:53
Hugo: dzięki teraz spróbuję przeanalizować
4 sty 01:54
asdf: to dziala tak: kazdy wiersz zaczyna sie od *, wiec daje (linia 4) printf("*"); pozniej masz taki warunek: jesli jestes w wierszu pierwszym lub ostatnim, pisz gwiazki, inaczej wypelnij je pusta przestrzenią. czyli: row idzie tak: 0,1,2,3 row = 0 => pierwszy wiersz => 0 % 4−1 = 0 % 3 = 0 row = 3 => ostatni wiersz => row % maxrow − 1 = 3 % 4 − 1 = 3 % 3 = 0 dla 1 i 2 sobie policz wypisuje (maxstar − 1) razy, bo na koncu zawsze jest gwiazdka. dodaje: printf("*\n"); rozkmin i ew. pytaj.
4 sty 01:56
asdf: mozesz dac rownie dobrze taki warunek: if( (row == 0) || (row == maxrow −1) ) { ... }
4 sty 01:57
Hugo: ok, będzie po 12 na forum ?
4 sty 02:10
asdf: kto będzie?
4 sty 02:11
Hugo: Ty asdf czy będziesz ?
4 sty 02:14
asdf: po 12 nie, pozniej. Jak bede to odpisze. Pisz zadania, probuj je sam rozwiazywac, jak nie wychodzi * − dopiero wrzucaj na forum... * − "nie wychodzi" w sensie siedzisz i bijesz "glowa w mur", bo nie wiesz jak ruszyc, a nie ze sie nie chce to sobie poczekam na kogos, z reszta − i tak da sie to szybko zauwazyc.
4 sty 02:19
Hugo: ok
4 sty 02:24
Rycerz: asdf wiesz może jak wywołać pojedyńczy rekord z bazy danym (sql) na bazie loginu ? mam tabęle klienci: imie|nazwisko|wiek|login|haslo peter parker 18 admin admin john rambo 22 1 1 i jak się zaloguję np. poprzez admina to żeby mi wyświetlało tylko ten rekord imie|nazwisko|wiek|login|haslo peter parker 18 admin admin probowałem takie coś ale nie działało "select * from klienci where login = '?' "
4 sty 02:35
Rycerz: jak coś to robię to javie ale to chyba nie ma znaczenia
4 sty 02:35
asdf: sekunda
4 sty 02:36
asdf: select * from klienci where login ='admin'
4 sty 02:37
asdf: nie zapomnij '
4 sty 02:39
asdf: w sqlu jest funkcja first, ale nie wiem z jakiego silnika korzystasz. http://www.w3schools.com/sql/sql_func_first.asp ew. TOP, albo LIMIT − to zalezy...
4 sty 02:41
Rycerz: chyba źle mnie zrozumiałeś chodzi mi o taką sytuację: mam jakąś tam bazę klientów i teraz chcę by byle który się zalogował (czyli dowolny klient) i w tabelce był wyświetlany tylko jego rekord to co podałeś to by dotyczyło tylko spidermana
4 sty 02:41
Rycerz: jak coś to tabelkę robiłem w sql manager, taki dodatek do firefoxa
4 sty 02:43
asdf: strzelam: piszesz pod SQLite?
4 sty 02:46
Rycerz: Robiłem w SQLite Manager tak więc chyba tak
4 sty 02:48
asdf: jesli masz tabele: table klienci { login − primary key, haslo − string, itd... }; to jesli sie logujesz: masz dwa inputy: login, haslo..sprawdzasz w bazie danych: "select count(*) from klienci where login = '" + myLogin + "' AND haslo = '" + myPassword + "';"; masz w zmiennej k = ile jest takich loginow. if( k > 0) wypisz w jakims labelu, czy gdzie tam chcesz ten login, przechowuj go gdzies w zmiennej.
4 sty 02:51
asdf: jesli juz korzystasz z sqlite, to chociaz zabezpiecz ten plik haslem − ucz sie juz przydatnych rzeczy, ale jak chcesz
4 sty 02:55
Rycerz: To jest mój kod do logowania: String sql = "select * from pracownicy where login=? and haslo=?"; try { stmt=conn.prepareStatement(sql); stmt.setString(1, tnazwaUzytkownika.getText()); stmt.setString(2, tphasloUzytkownika.getText()); rs = stmt.executeQuery(); if(rs.next()) { //JOptionPane.showMessageDialog(null, "Nazwa Uzytkownika i haslo są poprawne"); zamknij(); rs.close(); stmt.close(); pracownicyinfo p = new pracownicyinfo(); p.setVisible(true); } else { JOptionPane.showMessageDialog(null, "Nazwa Uzytkownika i haslo są błędne!"); } } catch(Exception e) { JOptionPane.showMessageDialog(null,e); } z tą zmienną k nie za bardzo rozumiem: Tutaj kod do pojedyńczego rekordu try { String sql = "select * from klienci where login = '?"; //Tutaj jest cały winowajca stmt = conn.prepareStatement(sql); rs = stmt.executeQuery();; tabelaklient.setModel(DbUtils.resultSetToTableModel(rs)); }catch(Exception e) { JOptionPane.showMessageDialog(null,e); }
4 sty 03:00
Rycerz: To dotyczy też pracowników , klientów podalem tak dla przykładu.
4 sty 03:01
asdf: Przyklad dla tego − przypuszczam, ze tutaj chcesz jakos przeniesc informacje o zalogowanym pracowniku: PracownicyInfo p = new PracownicyInfo(); nie mozesz zrobic konstruktor ktory jako parametr przyjmuje odpowiedni login ( czyli Twoje tnazwaUzytkownika.getText()), np. http://pastebin.com/jF2pD2Q6 wtedy: (...) // jesli wszystko sie udalo i login & haslo jest ok: PracownicyInfo p = new PracownicyInfo(tnazwaUzytkownika.getText()); tnazwaUzytkownika.setText(p.getLogin()); //TUTAJ MASZ NAZWE ZALOGOWANEGO UZYTKOWNIKA
4 sty 03:12
Rycerz: asdf ale to nie jest konstruktor, to jest tylko dodana akcja do buttona, tnazwaUzytkownika to jtextfield (to jest w logowaniu), w sumie nie wiem jak bym to inaczej zrobił.
4 sty 03:37
asdf: najprosciej jak sie da: (caly czas Tobie pisze...) zrob tak: string currentLogin = tnazwaUzytkownika.getText(); query = select * from TWOJATABELA where login = '" + currentLogin +"'; "; pozniej: int counter = 0; while(rd.Next()) { counter ++; } if(counter > 0) WYSWIETL K*...RDE TEN LOGIN! MASZ GO W ZMIENNEJ currentLogin else { currentLogin = null; NIE UDALO SIE ZALOGOWAC!; }
4 sty 03:46
asdf: co Ty mi piszesz...po new nie wywoluje sie konstruktor? ... a co? event? (sorry, ze tak pisze, ale chyba juz jestes zmeczony, albo ja niewyspany).
4 sty 03:47
asdf: mozna to prosciej: select count(*) from TWOJATABELA WHERE login = ...; i pobierasz ten count(*)
4 sty 03:48
asdf: ja ide spac
4 sty 03:50
Rycerz: Meh cały czas nie działa zrobiłem tak jak mówiłeś: String login = tnazwaUzytkownika.getText(); String sql1 = "select * from klienci where nazwau='"+ login + "' and haslo=?; "; try { stmt=conn.prepareStatement(sql1); stmt.setString(1, login); stmt.setString(2,tphasloUzytkownika.getText()); rs = stmt.executeQuery(); while(rs.next()) { liczbaliter++; } if(liczbaliter>0) { //JOptionPane.showMessageDialog(null, login); zamknij(); klientinfo kie = new klientinfo(); kie.setVisable(true); } else { login=null; JOptionPane.showMessageDialog(null, "Nazwa Uzytkownika i haslo są błędne!"); } } catch(Exception e) { JOptionPane.showMessageDialog(null,e); } Odnośnie tego konstruktora to wybacz, późna pora robi swoje.
4 sty 16:44
Rycerz: bump
4 sty 22:39
asdf: 1. zapisujesz do zmiennej wartosc, ktora uzytkownik wpisal w odpowiednie pole. String login = tnazwaUzytkownika.getText(); String haslo = thasloUzytkownika.getText(); 2. ustawiasz sqla sql 3. wysylasz zapytanie, w ktorym sprawdzasz czy istnieje podany login i podane haslo: SELECT * FROM klienci WHERE login = 'login' AND haslo = 'haslo'; 4. wywolujesz te zapytanie int ileodpowiedzi = 0; 5. pobierasz zapytanie, iterujesz po wszystkich otrzymanych odpowiedziach: while(rd.Next()) ileodpowiedzi++; jesli ileodpowiedzi == 0 to znaczy, ze nie ma takiego uzytkownika jesli ileodpowiedzi > 0 to znaczy, ze uzytkownik dla podane loginu podal poprawne haslo czyli mozesz przekazac ten login dalej, np. do innego konstruktora, lub wpisac do jakiegos labela...obojetnie − rob z tym co chcesz Sorry, ale prosciej chyba sie nie da. Jesli to Ci wyjdzie, dalej mozemy poprawiac kod.
4 sty 23:09
asdf: "jesli ileodpowiedzi == 0 to znaczy, ze nie ma takiego uzytkownika" powinno byc: "jesli ileodpowiedzi == 0 to znaczy, ze nie ma takiego uzytkownika" albo: "uzytkownik istnieje, ale haslo jest zle"..Operacja AND − wiadomo...
4 sty 23:11
Rycerz: Wywala mi cały czas błąd java.lang.ArrayIndexOutOfBoundsException: 0
5 sty 00:52
Rycerz: Aha, tablica nie jest pusta, są tam dane.
5 sty 00:53
asdf: wrozka nie jestem, skad mam wiedziec gdzie masz blad? zdebuguj program i bedziesz wiedziec. Ja Tobie podalem tylko algorytm, a nie jego implementacje. Szczerze powiedziawszy − nawet nie czytalem do konca Twojego kodu − nie za wiele, np. mowi mi funkcja zamknij(). Umiejetnosc debugowania to podstawa, wpisz nazwe swojego programu, w ktorym piszesz i dodaj "debugging", np. eclipse debugging lub eclipse debugger. Powodzenia!
5 sty 01:17
asdf: na pewno jak masz: ArrayIndexOutOfBoundsException to zapewne wykroczyles poza zakres tablicy, np. dla tablicy: tab[5] = {0,1,2,3,4} zrobisz: tab[5] to wywali blad..wiadomeemotka
5 sty 01:17
asdf: w javie jak przelatujesz, np. forem po tablicy to chyba jest metoda size() (np. tab.size()), w dokumentacji pewnie jest − albo google => "display array by for in java" lub cos w tym stylu.
5 sty 01:19
Rycerz: W sumie to od razu to pobiera dane z tablicy utworzonej w sqlite (czyli niby jakim cudem przekroczyło index?). Powiniem to zrobić tak? utworzyć nową tablicę w javie−>pobrać dane z tablicy sqlite do tej z javy−>i dopiero pobierać dane z tablicy javy ?
5 sty 01:34
asdf: nie powinno miec to zadnego znaczenia, blad moze byc gdzie indziej jeszcze, ale to tylko przypuszczenie. Tu masz dobry przyklad: http://alvinalexander.com/java/edu/pj/jdbc/jdbc0003 Moim zdaniem mozesz dobierać się do info, które nie pozyskales przez select. Np. tabela person: ID * | firstName | lastName robisz: SELECT * FROM person WHERE ID = 1 w ten sposob mozesz pobrac ID, firstName, lastName, ale juz dla zapytania: SELECT firstName FROM person WHERE ID = 1 nie pobierzesz info o ID i nazwisku. To jest cos na wzor tablic asocjacyjnych (nie wiesz − to google)
5 sty 01:43
asdf: Zacznij od naprawde prymitywnych zapytan i je rozszerzaj, wtedy na pewno znajdziesz blad. Przy okazji zapytam: debugowales juz kiedys program?
5 sty 01:46
Rycerz: błąd wywala jak wchodzi do kodu : stmt.setString(1, login)
5 sty 01:54
asdf: ...skad mam wiedziec co masz pod zmienną login, jaka klasa jest stmt i co robi metoda setString()?
5 sty 01:56
asdf: 2) nie podales nawet jaki wyjatek jest nie obsluzony tu masz przyklad cos o tym: http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html Postaw sie w mojej sytuacji...nie wkurzylbys sie?
5 sty 01:59
5 sty 01:59
asdf: daj takie zapytanie: String sql1 = "select * from klienci where nazwau='?' and haslo='?';"; albo takie: String sql1 = "select * from klienci where nazwau=? and haslo=?;"; albo takie: String sql1 = "select * from klienci where nazwau=? and haslo=?";
5 sty 02:02
Rycerz: setString zmienia wartość do stringa cały kod: String login; login = tnazwaUzytkownika.getText(); String haslo; haslo=tphasloUzytkownika.getText(); String sql1 = "SELECT * FROM klienci WHERE nazwau='login' AND haslo='haslo' "; try { stmt=conn.prepareStatement(sql1); stmt.setString(1, login); stmt.setString(2, haslo); JOptionPane.showMessageDialog(null, "sdada"); rs = stmt.executeQuery(); int liczbaliter; liczbaliter=0; .while(rs.next()) { liczbaliter++; } if(liczbaliter>0) { //JOptionPane.showMessageDialog(null, login); zamknij(); // to jest funkcja do zamykania −> this.dispose() klientinfo kie = new klientinfo(); kie.setVisable(true); } } catch(Exception e) { JOptionPane.showMessageDialog(null,e); }
5 sty 02:06
asdf: no to wiadome, ze jest blad w stmt.setString − przeczytaj moj ostatni post.
5 sty 02:08
Rycerz: Poszło ale dopiero z ostatnim, teraz są następujące błędy: while(rs.next()) { liczbaliter++; //tutaj zwieksza sie o 1 mimo ze podalem nazwe o 2,3 znakach } później mam błąd: java.lang.UnsupportedOperationException: Not supported yet znalazłem takie coś: " You've probably used an IDE such as Netbeans to implement an interface / override an abstract class that needs certain methods implementing. When IDEs do this (Netbeans definitely does) they generate method stubs for you like this so the code still compiles but if you try and call a method you haven't actually implemented you get an unavoidable error. Usually this means you have to implement the given method, but sometimes an implementation does genuinely call for a blank method stub, in which case just delete the line that's throwing the exception." Po usuwalem ale to nie działa
5 sty 02:32
asdf: pousuwalem − ale co? unsupportedoperationexception − kiedy ?
5 sty 02:36
Rycerz: kiedy wchodzi do warunku if(liczbaliter>0) pousuwałem niepotrzebne actionsperfomed(tzn. sprawdziłem czy tam nic nie ma)
5 sty 02:41
asdf: Wez za kazdym razem postaw sie w mojej sytuacji i przeczytaj to co napisales. Zrozumialbys o co dokladnie chodzi? ... jest to irytujace
5 sty 02:42
asdf: wejdz tu: http://collabedit.com/cghws jestem dostepny do 02:55.
5 sty 02:43
Rycerz: dobra jestem
5 sty 02:50
Rycerz: Dobra uporałem się z unsupportedoperationexception. Wszystko ładnie wyświetla ale teraz potrzebuje by wysłało tego stringa (login) do innej klasy (klienciinfo). W programie konsolowym bym normalnie zrobił gettera i by się wysłało ale tutaj mam wszystko w polu private (button)
6 sty 00:44
6 sty 00:52
asdf: chyba, ze w klasie klienciinfo masz button, ktory jest prywatny. Wtedy mozesz zrobic metode dla tego buttona publiczna, a w niej: public void setButtonText(string text) { this.myButton.setText(text); } albo udostepnic button jako publiczny,wtedy: klienciinfo.myButton.setText(text);
6 sty 00:58
Rycerz: Nie.W klasie klienciinfo mam tylko metodę do odświeżania danych (właśnie do niej chce wysłać tego stringa z login, potem tą metodę dodaje do konstruktora przez co jak się zaloguję tam to mam od razu dane w JTable). Wcześniej pisałeś coś takiego jak login i hasło będą ok: PracownicyInfo p = new PracownicyInfo(tnazwaUzytkownika.getText()); ale w sumie nie za bardzo rozumiem co chcesz zrobić (czyli jak to przesłać) ps. NetBeans ustawia wszystkie buttony jakie się stworzy automatycznie na prywatne
6 sty 01:14
asdf: kurde mac, nie znam Twojego kodu, skad mam wiedziec? Jak masz kod to zrob sobie to co masz 00:58.
6 sty 01:34
Rycerz: No zrobiłem a teraz jak mam to niby zainicjować ? cały kod: int Liczbaznakowuzytkownika; Liczbaznakowuzytkownika=0; String sql1 = "SELECT * FROM klienci WHERE nazwau=? AND haslo=?; "; try { stmt=conn.prepareStatement(sql1); stmt.setString(1, login); stmt.setString(2, haslo); rs = stmt.executeQuery(); while(rs.next()) { Liczbaznakowuzytkownika++; } if(Liczbaznakowuzytkownika>0) { rs.close(); stmt.close(); zamknij(); // this.dispose klientinfo kie = new klientinfo(); kie.setVisible(true); } else { if(tnazwaUzytkownika.getText().equals("") && tphasloUzytkownika.getText().equals("")) { JOptionPane.showMessageDialog(null, "Wprowadź nazwę użytkownika i hasło!"); } else if(tphasloUzytkownika.getText().equals("")) { JOptionPane.showMessageDialog(null, "Brak hasła!"); } else { JOptionPane.showMessageDialog(null, "Wprowadź nazwę użytkownika!"); } } } catch(Exception e) { JOptionPane.showMessageDialog(null,e); } twoja metoda: public void setLoginText(String text) { //text = tnazwaUzytkownika.getText(); // o to chodziło ? this.jLogin.setText(text); }
6 sty 01:47
asdf: wywolaj po kie.setVisible(true); metode: this.jLogin.setText(login); jesli jLogin jest elementem Twojej klasy, jesli nie − pobierz jego referencje i po prostu ustaw. Nie wiem ile razy bede Tobie pisac...NIE MAM TWOJEGO KODU A WROZKA NIE JESTEM!
6 sty 02:43
Rycerz: no dobra ale jak później mam zrobić w gettera ? jLogin jest w klasie logowania
6 sty 04:39
asdf: jakiego gettera?...tlumaczysz tak jakbys chcial a nie mogl SKAD MAM WIEDZIEC! NIE MAM TWOJEGO KODU!
6 sty 13:48