spacji nie masz xD
Wersja do druku
spacji nie masz xD
Po x godzinach programowania dzisiaj nie wiem jak to w końcu naprawiłem. W każdym razie
zaczęło nagle działać, chociaż wcześniej tego też próbowałem...Kod:String nameString = "....";
PreparedStatement pst = conn.prepareStatement("DELETE FROM " + db + "WHERE name =?");
pst.setString(1, nameString);
Ogólnie doszedłem jednak do wniosku, ze faktycznie sql tutaj jest średnim rozwiązaniem.
Aplikacja to prosty dziennik kalorii.
Wczytuje produkty z bazy danych do TableView A, da się wybrane produkty dodawać/usuwać do TableView B, który właśnie zapisywany jest do innej tabeli w bazie danych, miała mieć unikalną nazwę typu id+data tak by można wczytywać tabele z danego dnia oraz po prostu włączać i wyłączać program danego dnia. Jednak dochodzę do wniosku, że lepiej tę część po prostu zrobic na pliku txt, z tego gdzie coś wyczytałem to taki dynamiczny dostęp do baz danych jest bardzo nie wskazany. Druga sprawa, że mój kod usuwa z bazy przykładowo wszystkie produkty "pomidor", a w TableView tylko ten 1 wybrany...
dziwne ze ci działa bo tak jak WielkieZło napisał wyżej, w:
nie masz spacji przed 'WHERE' :PKod:DELETE FROM " + db + "WHERE name =?"
ps. pociesze cię(albo i nie) że sposób w ktory komunikujesz sie z bazą danych był uzywany pewnie w 2005 roku albo i wcześniej. teraz robisz to kilkoma linijkami bez zbędnego pierdolenia.
spring jdbc
Chce by metoda otwarła plik, zapisała wszystkie jego linie do listy, sprawdziła czy lista zawiera dany String filename i jeżeli nie to go dodała. Co tu jest nie tak, że mimo iż w pliku jest już 5 takich Stringów to metoda i tak dodaje kolejny?Kod:public void createUserFile() throws IOException{
File file = new File("test.txt");
FileWriter fw = new FileWriter(file, true);
BufferedWriter bw = new BufferedWriter(fw);
Scanner scan = new Scanner("test.txt");
try {
if (!file.exists()) {
file.createNewFile();
}
List filelist = new ArrayList();
while(scan.hasNextLine()){
filelist.add(scan.nextLine());
}
if(!filelist.contains(filename)){
bw.write(filename);
bw.newLine();
}
}catch(Exception e){
e.printStackTrace();
} finally {
bw.flush();
bw.close();
scan.close();
}
}
edit#
Wprowadziłem drobne zmiany
teraz wyświetla mi nazwę pliku (by się upewnić, że do tej pory została ona już zadeklarowana przez inne metody) i ciągle przechodzi do else "nie znalazło". A w pliku jest kilka linijek które powinno znaleźć...Kod:while(scan.hasNextLine()){
if(filename.contains(scan.nextLine())){ //equals tak samo
System.out.println(filename);
System.out.println("znalazlo");
break;
}else{
System.out.println(filename);
System.out.println("nie znalazlo");
}
}
Błędem było utworzenie scannera ze stringiem jako argument zamiast obiektem file - więc scanner zawierał nazwę pliku, a nie jego zawartość.
Na przyszłość polecam: http://www.vogella.com/tutorials/Ecl...g/article.html lub tutorial do debugowania do IDE, z którego korzystasz.
Kod:public class TorgFile {
public static void main(String[] args) throws IOException {
TorgFile torgFile = new TorgFile();
String test = "test";
torgFile.createUserFile(test);
torgFile.createUserFile(test);
torgFile.createUserFile(test);
}
public void createUserFile(String filename) throws IOException {
File file = new File("test.txt");
FileWriter fw = new FileWriter(file, true);
BufferedWriter bw = new BufferedWriter(fw);
Scanner scan = new Scanner(file);
try {
if (!file.exists()) {
file.createNewFile();
}
List<String> filelist = new ArrayList<>();
while (scan.hasNext()) {
filelist.add(scan.next());
}
if (!filelist.contains(filename)) {
bw.write(filename);
bw.newLine();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
bw.flush();
bw.close();
scan.close();
}
}
}
no właśnie, nie odpalaj programu na 'run' tylko 'debug', wtedy mozesz zatrzymywać się na konkretnych linijkach kodu i sprawdzać co tam jest i co się dzieje
dlaczego przy tworzeniu nowej instancji roomu lista writerów jest cały czas taka sama?
http://pastebin.com/aQphxiC8
#edit
wywaliło posty przez migrację coś się, coś się popsuło i nie było mnie słychać, to powtórzę jeszcze raz - dążę do tego, by każdy Room miał listę PrintWriterów graczy w nim przebywających (writery tworzę i dodaję w inicjalizacji PlayerHandler, po uzyskaniu połączenia via socket); w obecnej formie po utworzeniu nowego pokoju, lista cały czas posiada PrintWritery graczy z poprzednich roomów. jak temu zaradzić?
okazało się, że źle zliczałem liczbę graczy na serwerze. po utworzeniu jednej instancji klienta więcej przekonałem się, że wszystko działa jak należy.
elo, ja tu troche z noobskim pytaniem ale sprawa wyglada tak:
potrzebuje napisac bota (a raczej dwa) do prostej gierki, co chce osiagnac:
1) gierka jest powiedzmy wyscigowa, potrzebuje bota, ktory ultra szybko startuje (wciska strzalke w momencie kiedy wyscig sie zaczyna). w momencie startu jest odgrywany dzwiek, powiedzmy ding.wav i wydaje mi sie, ze z tego najlatwiej wyciagnac informacje o tym kiedy trzeba kliknac ta szczalke.
2) skanowanie po ip/portach (na sieciach sie chuja znam) czy serwer gry jest wlaczony (serwery w niej stawiaja ludzie na swoich pctach gdy chca sobie pograc) i jak najszybsze polaczenie sie z serwerem (ewentualnie samo powiadomienie o tym, polaczyc sie moge recznie zeby bylo latwiej) bo ta gierka jest zbugowana i ten kto pierwszy wejdzie na serwer ma lekka przewage nad pozostalymi.
teraz tak - zdaje sobie sprawe, ze to ciut zaawansowane rzeczy i nikt nie bedzie tlumaczyl szczegolowo co robic, ale to jest cel na kilka najblizszych miesiecy i chce, zebyscie mi po prostu podsuneli pomysl jak powyzsze dwie rzeczy wychwycic a ja sobie bede w wolnym czasie pomału googlowal i uczyl sie metoda prob i bledow.
znam podstawy c++ ale nie wiem czy nie lepiej by bylo ogarnac pythona albo inny skryptowy jezyk do tego typu rzeczy?
Mysle ze najlatwiejszy sposob to znalezienie jakiejs zmiennej ktora zmienia sie w momencie startu. Ja bym na poczatku sprobowal sciaganc cheat engine i za pomoca odfiltrowywania zmiennych staral sie powiazac jakas zmienna z tym wydarzeniem. Tych zmiennych bedzie pewnie duzo wiec dowolna z nich ci wystarczy. A potem majac adres tej zmiennej albo wskaznik do niej za pomoca jakiejs funkcji read process memory juz sobie bedziesz ja mogl czytac kiedy tylko chcesz i na jej podstawie robic jakies akcje.
2) skanowanie po ip/portach (na sieciach sie chuja znam) czy serwer gry jest wlaczony (serwery w niej stawiaja ludzie na swoich pctach gdy chca sobie pograc) i jak najszybsze polaczenie sie z serwerem (ewentualnie samo powiadomienie o tym, polaczyc sie moge recznie zeby bylo latwiej) bo ta gierka jest zbugowana i ten kto pierwszy wejdzie na serwer ma lekka przewage nad pozost
Ale to tez sie odbywa przez aplikacje gry w ktorej masz tabelke z lista serwerow czy ty musisz znac ip i wpisac to ip jakos przez konsole? Jak ta pierwsza opcja to chyba podobnie mozesz zrobic. Tzn dowiedziec sie w jakiej zmiennej jest przechowywany licznik aktualnie dostepnych serwerow a potem monitorowac ta zmienna i jak sie zwiekszy o 1 to wiesz ze sie pojawil nowy serwer
Mamy jakiś gopherów na pokładzie?
http://jetbrains.com/go
<stanął mi>
Oczywiście ;) Fajnie ze teraz bedzie first class IDE support dla Go :)