nie mogę przekazać zmiennej-string do zapytania SQL

Odpowiedz Nowy wątek
2011-08-14 17:54
0

Witam wszystkich to mój pierwszy post na forum, i od razu błagalny.
Muszę zrobić project w Javie na zaliczenie przedmiotu na uczelni.Prosty applet, który ma obsługiwać bazę danych z ocenami studentów. I nie mogę przekazać zmiennej string pobieranej z TextFielda.Chodzi o zmienną usuwanie pobieraną z pola indeks.getText();.Po kliknięciu w Buton usun zapytanie "String query = "DELETE FROM oceny WHERE 'indeks' = '"+usuwanie+"'";." nie wykonuje się.(nie widzę zmian w bazie) Poniżej przedstawiam kod.

public class DataBase extends JApplet implements ActionListener,MouseMotionListener{
public

String haslo,login,usuwanie;
String msg = "";
Button yes,dodaj,usun;
TextField name, index,zaliczenie,egzamin1,egzamin2,nazwisko,indeks;
StringBuffer results;
Frame f;
int szer_apletu,wys_apletu;
@Override
public void init(){
setSize(150,400);
setLayout(new FlowLayout(FlowLayout.CENTER));
Label Zal = new Label("Zal");
Label Egzamin1 = new Label("Egzamin1");
Label Indeks = new Label("Indeks");
Label indexp = new Label("Index:");
index = new TextField(6);
zaliczenie = new TextField(2);
egzamin1 = new TextField(2);
indeks = new TextField(6);
yes = new Button("loguj");
dodaj = new Button("dodaj");
usun = new Button("usun");

add(indexp);
add(index);
add(yes);
add(dodaj);
add(usun);
add(Zal);
add(zaliczenie);
add(Egzamin1);
add(egzamin1);
add(Indeks);
add(indeks);

yes.addActionListener(this);
index.addActionListener(this);
dodaj.addActionListener(this);
zaliczenie.addActionListener(this);
egzamin1.addActionListener(this);
indeks.addActionListener(this);

}

public void actionPerformed(ActionEvent ae){
String str = ae.getActionCommand();

if (str.equals("loguj"))
{
haslo = index.getText();
f = new SampleFrame(haslo);
f.setSize(250, 250);
f.setVisible(true);
}
else if (str.equals("usun"))
{ login = index.getText();
if (login == "epsil"){
try {
usuwanie = indeks.getText();
Class.forName("org.postgresql.Driver");
} catch (java.lang.ClassNotFoundException e) {
System.err.println("ClassNotFoundException: " + e.getMessage());
}
try {
Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/oceny", "postgres", "epsilon24");
Statement statement = connection.createStatement();
String query = "DELETE FROM oceny WHERE 'indeks' = '"+usuwanie+"'";
ResultSet rs = statement.executeQuery(query);
//process query results;
results = new StringBuffer();
ResultSetMetaData metaData = rs.getMetaData();
int numberOfColumns = metaData.getColumnCount();
for (int i = 1; i <= numberOfColumns; i++) {
results.append(metaData.getColumnName(i) + "\t");
}
results.append("\n");
while (rs.next()) {
for (int i = 1; i <= numberOfColumns; i++) {
results.append(rs.getObject(i) + "\t");
}
results.append("\n");
}
statement.close();
connection.close();
} catch (SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
}
}
}
}


hex.cba.pl

Pozostało 580 znaków

2011-08-14 18:38
1

Zamiast if (login == "epsil")
napisz if (login.equals("epsil"))

Pozostało 580 znaków

2011-08-14 18:55
0

dzięki wielkie, jestem kompletnym laikiem w Javie i naleciałości z c++, robią swoje


hex.cba.pl

Pozostało 580 znaków

2011-08-15 16:30
0

To jeszcze poczytaj o preparedstement, bo twój kod może być bardzo łatwo zaatakowany za pomocą prostego sql injection.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0