Nisam bas razumeo. A mislim da me nisi ni ti razumeo:
Evo ovako:
imam MakeConnection klasu, a ovo mi je MyAddUserPanel koji koristim za unos korisnika.
Code:
package myPackage;
import java.util.*;
import java.text.*;
import javax.swing.*;
import java.sql.Statement;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.awt.*;
public class MyAddUserPanel extends JPanel implements ActionListener {
[b]private MakeConnection conn = new MakeConnection();[/b]
private JButton addButton;
private JLabel member_idL;
private JLabel firstnameL;
private JLabel lastnameL;
private JLabel birthdayL;
private JLabel genderL;
private JLabel streetL;
private JLabel townL;
private JLabel stateL;
private JLabel emailL;
private JLabel mobile_phoneL;
private JLabel home_phoneL;
private JLabel has_payedL;
private JLabel date_addedL;
private JTextField ftf_member_id;
private JTextField ftf_firstname;
private JTextField ftf_lastname;
private JTextField ftf_street;
private JTextField ftf_birthday;
private JTextField ftf_gender;
private JTextField ftf_town;
private JTextField ftf_state;
private JTextField ftf_email;
private JTextField ftf_mobile_phone;
private JTextField ftf_home_phone;
private JTextField ftf_has_payed;
private JTextField ftf_date_added;
public MyAddUserPanel() {
super(new GridLayout(0,2));
addButton = new JButton("Add");
addButton.setActionCommand("add");
addButton.addActionListener(this);
member_idL = new JLabel("Member_ID");
firstnameL = new JLabel("Firstname");
lastnameL = new JLabel("Lastname");
birthdayL = new JLabel("Birthday");
genderL = new JLabel("Gender");
streetL = new JLabel("Street");
townL = new JLabel("Town");
stateL = new JLabel("State");
emailL = new JLabel("Email");
mobile_phoneL = new JLabel("Mobile_phone");
home_phoneL = new JLabel("Home_phone");
has_payedL = new JLabel("Has Payed");
date_addedL = new JLabel("Date_added");
ftf_member_id = new JTextField(20);
ftf_firstname = new JTextField(20);
ftf_lastname = new JTextField(20);
ftf_birthday = new JTextField(20);
ftf_gender = new JTextField(20);
ftf_street = new JTextField(20);
ftf_town = new JTextField(20);
ftf_state = new JTextField(20);
ftf_email = new JTextField(20);
ftf_mobile_phone = new JTextField(20);
ftf_home_phone = new JTextField(20);
ftf_has_payed = new JTextField(20);
ftf_date_added = new JTextField(20);
ftf_date_added.setText("NOW");
ftf_date_added.disable();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
JPanel panel6 = new JPanel();
JPanel panel7 = new JPanel();
JPanel panel8 = new JPanel();
JPanel panel9 = new JPanel();
JPanel panel10 = new JPanel();
JPanel panel11 = new JPanel();
JPanel panel12 = new JPanel();
JPanel panel13 = new JPanel();
panel1.add(member_idL);
panel1.add(ftf_member_id);
panel3.add(firstnameL);
panel3.add(ftf_firstname);
panel4.add(lastnameL);
panel4.add(ftf_lastname);
panel5.add(birthdayL);
panel5.add(ftf_birthday);
panel2.add(genderL);
panel2.add(ftf_gender);
panel6.add(streetL);
panel6.add(ftf_street);
panel7.add(townL);
panel7.add(ftf_town);
panel8.add(stateL);
panel8.add(ftf_state);
panel9.add(emailL);
panel9.add(ftf_email);
panel10.add(mobile_phoneL);
panel10.add(ftf_mobile_phone);
panel11.add(home_phoneL);
panel11.add(ftf_home_phone);
panel12.add(has_payedL);
panel12.add(ftf_has_payed);
panel13.add(date_addedL);
panel13.add(ftf_date_added);
panel13.add(addButton, SpringLayout.WEST);
add(panel1);
add(panel3);
add(panel4);
add(panel5);
add(panel2);
add(panel6);
add(panel7);
add(panel8);
add(panel9);
add(panel10);
add(panel11);
add(panel12);
add(panel13);
}
public void actionPerformed(ActionEvent e) {
if ("add".equals(e.getActionCommand())) {
String str0 = ftf_member_id.getText();
String str1 = ftf_firstname.getText();
String str2 = ftf_lastname.getText();
String str3 = ftf_birthday.getText();
String str4 = ftf_gender.getText();
String str5 = ftf_street.getText();
String str6 = ftf_town.getText();
String str7 = ftf_state.getText();
String str8 = ftf_email.getText();
String str9 = ftf_mobile_phone.getText();
String str10 = ftf_home_phone.getText();
String str11 = ftf_has_payed.getText();
Date dt = new Date();
//chose the format
SimpleDateFormat df = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss.S" );
String str12 = "" + df.format( dt );
String query = "INSERT INTO Users VALUES(" +
Integer.parseInt(str0) + "," + "\'" + str1 + "\'," + "\'" + str2 + "\'," +
"\'" + str3 + "\'," + "\'" + str4 + "\'," + "\'" + str5 + "\'," + "\'" + str6 + "\'," +
"\'" + str7 + "\'," + "\'" + str8 + "\'," + "\'" + str9 + "\'," + "\'" + str10 + "\'," +
"\'" + str11 + "\'," + "\'" + str12 + "\')";
System.out.println(query);
[b]conn.establish();
conn.executeUpdate(query);[/b]
}
}
}
Ovako funkcionise. Ali ja ocu da samo iz te klase prosledim Statement na bazu a da ne pravim konekciju. Kad postavim samo gore:
private Statement stmt;
i onda dole ubacim stmt.executeUpdate() (bez linije conn.establish(); ) onda mi javlja
NULLPOINTERexception
Ovo je MakeConnection()
Code:
package myPackage;
import java.sql.*;
import java.util.*;
public class MakeConnection {
[b]private Connection conn;
private ResultSet rs;
private boolean connState;
private Statement stmt ;
public MakeConnection() {
this.connState=false;
conn = null;
stmt =null;
}[/b]
public void prepareStatement() {
try {
stmt = conn.createStatement();
}catch(SQLException e) {
System.err.println("SQL EXCEPTION: " + e);
}
}
// ESTABLISH CONECTION
public void establish() {
if(this.getState()==true) { System.out.println("Alredy established!!!"); }
else {
try {
//login data
String userName = "sa";
String password = "";
//driver loading
Class.forName("org.hsqldb.jdbcDriver");
//url specification
String url = "jdbc:hsqldb:C:/tmp/Bookstore";
//getting connection
conn = DriverManager.getConnection(url, userName, password);
System.out.println("Database connection established");
this.connState = true;
System.out.println("Connection State: " + this.connState);
[b]stmt = conn.createStatement();[/b]
}
catch (Exception e)
{
System.out.println("Cannot connect to database server --> " + e);
}
}
}
public void disconnect() {
System.out.println("Connection State: " + connState);
System.out.println("exiting....");
try {
stmt.execute("SHUTDOWN");
stmt.close();
conn.close();
stmt=null;
conn =null;
this.connState=false;
} catch(SQLException e) {
this.connState=false;
stmt=null;
conn =null;
System.out.println("FEHLER!!!");
}
}
public boolean getState() {
return this.connState;
}
public int getCountHasPayed() {
String a = "SELECT count(has_payed) from users where has_payed like \'no\'";
int x = 0;
try {
rs = stmt.executeQuery(a);
while (rs.next()) {
x = rs.getInt("");
}
} catch (Exception e) {
System.err.println(e);
return 0;
}
return x;
}
public int getCountBooks() {
String a = "SELECT count(*) from books";
int x = 0;
try {
rs = stmt.executeQuery(a);
while (rs.next()) {
x = rs.getInt("");
}
} catch (Exception e) {
System.err.println(e);
return 0;
}
return x;
}
public int getCountUsers() {
String a = "SELECT count(*) from users";
int x = 0;
try {
rs = stmt.executeQuery(a);
while (rs.next()) {
x = rs.getInt("");
System.out.println(x);
}
} catch (SQLException e) {
System.err.println(e);
return 0;
}
return x;
}
public Vector<Vector<Object>> getUsers() {
String query = "SELECT * FROM Users";
Vector<Object> row;
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
try {
rs = stmt.executeQuery(query);
while (rs.next()) {
row = new Vector<Object>();
int a = rs.getInt("member_id");
String b = rs.getString("firstname");
String c = rs.getString("lastname");
String d = rs.getString("birthday");
String e = rs.getString("gender");
String f = rs.getString("street");
String g = rs.getString("town");
String h = rs.getString("state");
String i = rs.getString("email");
String j = rs.getString("mobile_phone");
String k = rs.getString("home_phone");
String l = rs.getString("has_payed");
String m = rs.getString("date_added");
row.add(0, a);
row.add(1, b);
row.add(2, c);
row.add(3, d);
row.add(4, e);
row.add(5, f);
row.add(6, g);
row.add(7, h);
row.add(8, i);
row.add(9, j);
row.add(10, k);
row.add(11, l);
row.add(12, m);
data.add(row);
}
} catch (Exception eee) {
System.out.println("ERROR: " + eee);
}
return data;
}
public Vector<Vector<Object>> getBooks() {
String query = "SELECT * FROM books";
Vector<Object> row;
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
try {
rs = stmt.executeQuery(query);
while (rs.next()) {
row = new Vector<Object>();
int a = rs.getInt("book_id");
String b = rs.getString("isbn");
String c = rs.getString("author");
String d = rs.getString("title");
String e = rs.getString("year_published");
String f = rs.getString("art");
String g = rs.getString("language");
String h = rs.getString("nr_of_pages");
int i = rs.getInt("borrowed_from");
row.add(0, a);
row.add(1, b);
row.add(2, c);
row.add(3, d);
row.add(4, e);
row.add(5, f);
row.add(6, g);
row.add(7, h);
row.add(8, i);
data.add(row);
}
} catch (Exception eee) {
System.out.println("ERROR1111: " + eee);
}
return data;
}
public Vector<Vector<Object>> getSearched(String q) {
String query = q;
Vector<Object> row;
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
try {
rs = stmt.executeQuery(query);
while (rs.next()) {
row = new Vector<Object>();
int a = rs.getInt("member_id");
String b = rs.getString("firstname");
String c = rs.getString("lastname");
String d = rs.getString("birthday");
String e = rs.getString("gender");
String f = rs.getString("street");
String g = rs.getString("town");
String h = rs.getString("state");
String i = rs.getString("email");
String j = rs.getString("mobile_phone");
String k = rs.getString("home_phone");
String l = rs.getString("has_payed");
String m = rs.getString("date_added");
row.add(0, a);
row.add(1, b);
row.add(2, c);
row.add(3, d);
row.add(4, e);
row.add(5, f);
row.add(6, g);
row.add(7, h);
row.add(8, i);
row.add(9, j);
row.add(10, k);
row.add(11, l);
row.add(12, m);
data.add(row);
}
} catch (Exception eee) {
System.out.println("ERR: " + eee);
}
return data;
}
public Vector<Vector<Object>> executeQueryUsers(String query, boolean select[]){
if (select.length != 13) return null;
Vector<Object> row;
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
try {
rs = stmt.executeQuery(query);
while (rs.next()) {
row = new Vector<Object>();
int a = rs.getInt("member_id");
String b = rs.getString("firstname");
String c = rs.getString("lastname");
String d = rs.getString("birthday");
String e = rs.getString("gender");
String f = rs.getString("street");
String g = rs.getString("town");
String h = rs.getString("state");
String i = rs.getString("email");
String j = rs.getString("mobile_phone");
String k = rs.getString("home_phone");
String l = rs.getString("has_payed");
String m = rs.getString("date_added");
row.add(0, a);
row.add(1, b);
row.add(2, c);
row.add(3, d);
row.add(4, e);
row.add(5, f);
row.add(6, g);
row.add(7, h);
row.add(8, i);
row.add(9, j);
row.add(10, k);
row.add(11, l);
row.add(12, m);
data.add(row);
}
} catch (SQLException eee) {
System.err.println("ERROR in ExcuteQuery: " + eee);
return null;
}
return data;
}
public Vector<Vector<Object>> executeQueryBooks(String query, boolean select[]){
if (select.length != 9) return null;
Vector<Object> row;
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
try {
rs = stmt.executeQuery(query);
while (rs.next()) {
row = new Vector<Object>();
int a = rs.getInt("book_id");
String b = rs.getString("isbn");
String c = rs.getString("author");
String d = rs.getString("title");
String e = rs.getString("year_published");
String f = rs.getString("art");
String g = rs.getString("language");
String h = rs.getString("nr_of_pages");
int i = rs.getInt("borrowed_from");
row.add(0, a);
row.add(1, b);
row.add(2, c);
row.add(3, d);
row.add(4, e);
row.add(5, f);
row.add(6, g);
row.add(7, h);
row.add(8, i);
data.add(row);
}
} catch (SQLException eee) {
System.err.println("ERROR ff: " + eee);
return null;
}
return data;
}
[b] public void executeUpdate(String a) {
try {
stmt=conn.createStatement();
stmt.executeUpdate(a);
} catch(SQLException e) {
System.err.println(e);
}
}
[b]
/*
// MAKING TABLES
//SQL statement
String createLeser = "CREATE TABLE Leser " +
"(member_id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, " +
"firstname VARCHAR(50) NOT NULL, " +
"lastname VARCHAR(75) NOT NULL, " +
"street VARCHAR(100) NOT NULL, " +
"town VARCHAR(50) NOT NULL, " +
"state VARCHAR(50) NOT NULL, " +
"birthday DATE NOT NULL, " +
"gender ENUM(\"Herr\",\"Frau\") NOT NULL, " +
"email VARCHAR(100) NULL, " +
"mobile_phone VARCHAR(20) NOT NULL, " +
"home_phone VARCHAR(20) NULL, " +
"date_added DATETIME DEFAULT \"0000-00-00 00:00:00\"); ";
String createBuecher = "CREATE TABLE Buecher " +
"(book_id INT UNSIGNED NOT NULL PRIMARY KEY, " +
"isbn CHAR(13) NULL , " +
"author VARCHAR(100) NOT NULL, " +
"title VARCHAR(150) NOT NULL, " +
"year_published VARCHAR(4) NOT NULL, " +
"art VARCHAR(50) NOT NULL, " +
"language ENUM(\"English\", \"Deutsch\",\"Franzoesisch\",\"Spanisch\",\"Italienisch\") NOT NULL, " +
"pages INT UNSIGNED NOT NULL, " +
"borrowed ENUM(\"true\",\"false\") NOT NULL DEFAULT \"false\", " +
"borrowed_from INT NOT NULL DEFAULT \"0\"); ";
try {
//creating statement
Statement s = conn.createStatement();
s.executeUpdate(createLeser);
s.executeUpdate(createBuecher);
s.close();
}catch(SQLException e) {
System.err.println("Fehler: ---> " + e);
}
System.out.println("Tabele \"Leser\" angelegt!");
System.out.println("Tabele \"Buecher\" angelegt!");
*/
}
Vidis ja moram da uvek kreiram ovde statement a pre toga moram da uspostavim konekciju. Kako da se resim toga?