Połączenie z bazą danych JDBC - brak zapisu danych

0

Witam

Posiadam taki oto kod napisany w Java. Eclipse pokazuje mi, że mam połączenie a dane (po wciśnięciu zapisz dane) nie zostają zapisane na db.

package dodawanie;

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.sql.*; 

public class Baza { 
public static void main(String args[]){ 
new Okno(); 
} 
} 
/***********************************/ 
class Okno extends JFrame { 
/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

public Okno(){ 
setSize(500,500); 
setTitle("Dodawanie nowych rekordów"); 
Panel panel=new Panel(); 
getContentPane().add(panel); 
setDefaultCloseOperation(3); 
setVisible(true); 
} 
} 
/**********************************/ 
class Panel extends JPanel implements ActionListener { 
/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
JTextField pole1, pole2; 
JButton przycisk;   
JLabel wiadomosc=new JLabel("");  
Statement st;   
public Panel(){ 
setBackground(new Color(200,151,255)); 
pole1=new JTextField(12);   
pole2=new JTextField(12);  
add(new JLabel("Produkt:")); 
add(pole1); 
add(new JLabel("Nazwa:")); 
add(pole2);
przycisk=new JButton("Dodaj dane");    
przycisk.addActionListener(this); 
add(przycisk); 
add(wiadomosc); 
} 
public void actionPerformed(ActionEvent ae){ 
polacz();   
String s1=pole1.getText().trim();   
String s2=pole2.getText().trim();   
String polecenie ="insert into Produkty(produkt,nazwa) values('"+s1+"','"+s2+"')";    
try{ 
st.executeUpdate(polecenie);    
st.close(); 
}catch(Exception ek){} 
wiadomosc.setText("Dane zostały zapisane w bazie."); 
pole1.setBackground(Color.yellow); 
pole2.setBackground(Color.yellow); 
validate(); 
} 
public void polacz(){    
try{ 
Class.forName("com.mysql.jdbc.Driver"); 
Connection pol=DriverManager.getConnection("jdbc:mysql://localhost/Przyklad","root",""); 
st=pol.createStatement();   
System.out.println("Polaczenie istnieje."); 
}catch(Exception ek){ 
System.out.println("Brak polaczenia."); 
} 
} 
}  
0
kę napisał(a):
timeo napisał(a):

Witam

Posiadam taki oto kod napisany w Java. Eclipse pokazuje mi, że mam połączenie a dane (po wciśnięciu zapisz dane) nie zostają zapisane na db.

package dodawanie;

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.sql.*; 

public class Baza { 
public static void main(String args[]){ 
new Okno(); 
} 
} 
/***********************************/ 
class Okno extends JFrame { 
/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

public Okno(){ 
setSize(500,500); 
setTitle("Dodawanie nowych rekordów"); 
Panel panel=new Panel(); 
getContentPane().add(panel); 
setDefaultCloseOperation(3); 
setVisible(true); 
} 
} 
/**********************************/ 
class Panel extends JPanel implements ActionListener { 
/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
JTextField pole1, pole2; 
JButton przycisk;   
JLabel wiadomosc=new JLabel("");  
Statement st;   
public Panel(){ 
setBackground(new Color(200,151,255)); 
pole1=new JTextField(12);   
pole2=new JTextField(12);  
add(new JLabel("Produkt:")); 
add(pole1); 
add(new JLabel("Nazwa:")); 
add(pole2);
przycisk=new JButton("Dodaj dane");    
przycisk.addActionListener(this); 
add(przycisk); 
add(wiadomosc); 
} 
public void actionPerformed(ActionEvent ae){ 
polacz();   
String s1=pole1.getText().trim();   
String s2=pole2.getText().trim();   
String polecenie ="insert into Produkty(produkt,nazwa) values('"+s1+"','"+s2+"')";    
try{ 
st.executeUpdate(polecenie);    
st.close(); 
}catch(Exception ek){} 
wiadomosc.setText("Dane zostały zapisane w bazie."); 
pole1.setBackground(Color.yellow); 
pole2.setBackground(Color.yellow); 
validate(); 
} 
public void polacz(){    
try{ 
Class.forName("com.mysql.jdbc.Driver"); 
Connection pol=DriverManager.getConnection("jdbc:mysql://localhost/Przyklad","root",""); 
st=pol.createStatement();   
System.out.println("Polaczenie istnieje."); 
}catch(Exception ek){ 
System.out.println("Brak polaczenia."); 
} 
} 
}  

KOD w stylu OMG, Może potrzeba użyć sql-owego polecenia LOCK? pamiętaj o prepareStatmentach

0

Dzięki
Zabieram się do pracy...

0

Popraw sekcję catch tak żeby logowała błędy i dodaj sekcję finally - zamykanie statement.

Przykład dla konsoli:
http://www.tutorialspoint.com/jdbc/jdbc-exceptions.htm

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