J G

J G Programista Php,
Supremum SEO Sp. z
o.o.

Temat: Pomoże ktoś?? chodzi o program javy połączone z H2

Zrobiłem już prawie wszystko napotkałem się tylko ja jeden problem w php pewnie bym to zrobił foreachem ale program muszę napisać w Javie mianowicie

[code

private void dodajLink(Connection conn, String url) throws SQLException {

String query = "select max(id) as lastid from Linki";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);

int id = 0;
if (rs.next()) {
id = rs.getInt("lastid");
}
++id;

int koniec = (url.length() < 500) ? url.length() : 500;

if ( ) <-- Tutaj
{
query = "Insert into linki values(" + id + ",'"
+ url.substring(0, koniec) + "')";

stmt = conn.createStatement();
stmt.executeUpdate(query);
query = "Insert into odwiedzone values(" + id + ",'"
+ url.substring(0, koniec) + "')";

stmt = conn.createStatement();
stmt.executeUpdate(query);
}
else
{
System.out.print("Link już istnieje");
}

}

code/]

Co mam wpisać tutaj żeby przeszło mi po wszystkich linkach wiem że pytanie wydaję się banalne , ale dopiero uczę się Javy :)

Chodzi o to żeby przeszedł po tabeli Odwiedzone i sprawdził czy ten link już tam istnieje pole w tabeli Odwiedzone to link

Z góry dziękuje

Z góry dziękujeJan Głogowski edytował(a) ten post dnia 20.11.12 o godzinie 12:13

konto usunięte

Temat: Pomoże ktoś?? chodzi o program javy połączone z H2

Znaczniki code oraz /code wpisuje się tutaj w nawiasach kwadratowych. Edytuj post.

Rozumiem że program ma dopisywać do bazy nowy rekord jeśli ten jeszcze tam nie istnieje? Jeśli tak, to przed operacją INSERT należy najpierw wykonać SELECT. Po prostu musisz napisać funkcję, która sprawdza za pomocą polecenia SQL:


SELECT * FROM tabela WHERE link = ...


czy dany link istnieje w tabeli. To tylko taki poglądowy szkic, w rzeczywistości trzeba napisać funkcję która zwraca typ boolean, w zależności od tego czy polecenie SELECT zwróci jakieś rekordy (może być ich więcej niż jeden) czy też nie zwróci żadnego.

Niestety nie programuję w JAVA, ponieważ nie posiadam odpowiedniego kompilatora, mógłbym tutaj ewentualnie napisać taki mały odpowiednik tego programu w języku Python bazując na SQLite.
J G

J G Programista Php,
Supremum SEO Sp. z
o.o.

Temat: Pomoże ktoś?? chodzi o program javy połączone z H2

ehhh jak wypisuje w nawiasach kwadratowych to znika cały kod ;)

konto usunięte

Temat: Pomoże ktoś?? chodzi o program javy połączone z H2

Jan Głogowski:
ehhh jak wypisuje w nawiasach kwadratowych to znika cały kod ;)

Tutaj jest to wyjaśnione

http://www.goldenline.pl/popup/BBCode.html
J G

J G Programista Php,
Supremum SEO Sp. z
o.o.

Temat: Pomoże ktoś?? chodzi o program javy połączone z H2

Dzięki wielkie już sobie prawie poradziłem brakuje mi tylko dobrego if-a a rozwiązałem to tak



private void dodajLink(Connection conn, String url) throws SQLException {
String query = "select max(id) as lastid from Linki";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);






int id = 0;
if (rs.next()) {
id = rs.getInt("lastid");
}
++id;





int koniec = (url.length() < 500) ? url.length() : 500;
query = "select link from odwiedzone where link = ?";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setString(1, url);
rs = pstmt.executeQuery();

if(("").equals(query))
{
System.out.print("taki link juz istnieje");
}
else
{

query = "Insert into linki values(" + id + ",'"
+ url.substring(0, koniec) + "')";

stmt = conn.createStatement();
stmt.executeUpdate(query);
query = "Insert into odwiedzone values(" + id + ",'"
+ url.substring(0, koniec) + "')";

stmt = conn.createStatement();
stmt.executeUpdate(query);
}



}




tylko nie wiem jeszcze co w tego ifa wsadzić ale walczę ;)
J G

J G Programista Php,
Supremum SEO Sp. z
o.o.

Temat: Pomoże ktoś?? chodzi o program javy połączone z H2


package pl.krakow.up.inf3;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class Spider {

public static void main(String[] args) {
Spider s = new Spider();
try{
s.odwiedzajStrony("http://www.up.krakow.pl/kmk/index.php");
} catch (Exception ex){
System.out.println("Wystapil wyjatek" +ex);
}
}

private void odwiedzajStrony(String adresPoczatkowy)throws SQLException, ClassNotFoundException {
//kolejka do ktorej dodawane sa linki
Class.forName("org.h2.Driver");
Connection conn = DriverManager.
getConnection("jdbc:h2:~/test", "janek","Francja1");
dodajLink(conn, adresPoczatkowy);

PobieraczStron ps = new PobieraczStron();
Wyszukiwacz wl = new Wyszukiwacz();

String l;
while ( (l=PobierzPierszyLink(conn))!=null) {

System.out.println("Przegladam strone: " + l);
String zawartosc = ps.pobierzStrone(l);
String[] noweLinki = wl.znajdzLinki(zawartosc);

for (String nl : noweLinki) { //pętla for która będdzie szła po kolekcji
dodajLink(conn,nl);
}
//System.out.println("Rozmiar kolejki do odwiedzenia" + kolejkaOdwiedzin.size());


}

}

private void dodajLink(Connection conn, String url) throws SQLException {
String query = "select max(id) as lastid from Linki";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);




int id = 0;
if (rs.next()) {
id = rs.getInt("lastid");
}
++id;





int koniec = (url.length() < 500) ? url.length() : 500;
query = "select link from odwiedzone where link = ?";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setString(1, url);

query = "select row_number()over()from odwiedzone";
stmt = conn.createStatement();
stmt.execute(query);
rs.last();
int count = rs.getRow();
rs.beforeFirst();



if (count==0)
{
query = "Insert into linki values(" + id + ",'"
+ url.substring(0, koniec) + "')";

stmt = conn.createStatement();
stmt.executeUpdate(query);

query = "Insert into odwiedzone values(" + id + ",'"
+ url.substring(0, koniec) + "')";

stmt = conn.createStatement();
stmt.executeUpdate(query);
}

else {

System.out.print("taki link juz istnieje");
}




}

private String PobierzPierszyLink(Connection conn) throws SQLException {
String query = "select min(id) as firstid from Linki";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
int id = -1;
if (rs.next()) {
id = rs.getInt("firstid");
} else {
return null;
}

query = "select * from linki where id=" + id;
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
String link = null;
if (rs.next()) {
link = rs.getString("URL");
} else {
System.out.println("Zniknal rekord o id" + id);
return null;
}
query = "delete from linki where id=" + id;
stmt = conn.createStatement();
stmt.executeUpdate(query);
return link;
}
}



Dzięki za pomoc



Wyślij zaproszenie do