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
4 sty 01:33
Hugo:
na 5.0 naprawdę podstawy Hugusiowi zalezy na tym
4 sty 01:36
Hugo:
a Ty razor ogarniasz ?
4 sty 01:36
razor: w miarę
4 sty 01:37
Hugo:
To podszkol Hugusia
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źniki
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
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
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();
klient
info kie = new klient
info();
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..wiadome
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
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
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