01konekcija1 PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

Konekcija na bazu podataka

Potrebne klase za rad sa SQL bazama podataka:

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

Potrebne klase za napredni oblik konekcije (skup konekcija) na bazu podataka:

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.digester.Digester;

Klasa u kojoj je prikazano uspostavljanje konekcije na MySQL bazu podataka:

public class V1Konekcija {

/*
* Podaci potrebni za konekciju na MySql bazu podataka
*/
static String korisnik = "root"; // Naziv korisnika za onekciju na BP
static String sifra = ""; // Sifra korisnika za konekciju na BP
static String driver = "org.gjt.mm.mysql.Driver"; // Drajver za konekciju na BP
static String driverOld = "com.mysql.jdbc.Driver"; // Drajver za konekciju - alternativni

static String urlTest2 = "jdbc:mysql://localhost:3306/Test2"; // url za jednu konekciju


static String urlOld = "jdbc:mysql://localhost:3306/urls1"; // drugi URL
static String url = "jdbc:mysql://localhost:3306/jdbcsotacnew"; // treci URL

// Podaci potrebni za napredni oblik konekcija na BP

protected int dbConnectionsMinCount = 4; // minimalan broj konekcija na BP


protected int dbConnectionsMaxCount = 10; // maksimalan broj konekcija na BP
protected int dbConnectionMaxWait = -1; // Maksimalno vrijeme cekanja za konekciju
protected BasicDataSource dataSource; // Osobina data source potrebna za
// naprednu konekciju na BP

// Osobine potrebne za rad sa bazom podataka

static Connection konekcija = null; // osobina konekcija za BP


private Connection connection; // druga konekcija za BP
static Statement iskaz = null; // osobina naredba za rad sa BP
static ResultSet rezultat = null; // Osobina skup redova rezultata
static DatabaseMetaData metaPodaci = null; // Osobina meta podataka
Metode za uspostavljanje konekcije

Konekcija na bazu podataka generalno gledano moze se uspostaviti na dva naina. Jedan koristei
metodu driver a druga koristei DataSorce klasu koja opisuje i uspostavlja konekciju.

Metoda sa driver-om

Metoda loadDriver

Ova metoda pronalazi i puni odgovarajui drajver za datu bazu podataka. Ona ustvari registruje
driver klasu. Parametar metode je naziv driver-a.

public void loadDriver() {


try {
// driver je staticka varijabla, definisana naprijed koja daje naziv drajvera
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

U ovoj korisnikoj metodi koristi se metoda forName sa parametrom driver. U naem sluaju taj
parametar je:

static String driver = "org.gjt.mm.mysql.Driver";

Metoda connect

Ova metoda uspostavlja vezu sa bazom podataka opisanom u odgovarajuem URL-u.

public void connect() {


try {
konekcija = DriverManager.getConnection(url, korisnik, sifra);
} catch (SQLException e) {
e.printStackTrace();
}
}

U okviru metode se koristi poziv metode getConnection klase DriverManager sa parametrima URL,
korisnik i sifra. U naem sluaju koristi se parametri:

url - static String urlTest2 = "jdbc:mysql://localhost:3306/Test2";


korisnik - static String korisnik = "root";
sifra - static String sifra = "";

Metoda disconekt

Ova metoda prekida vezu sa bazom podataka koja se nalazi u konekciji konekcija.

public void diskonekt(Connection konekcija) {


try {
konekcija.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

Ove metode se dovoljne za uspostavljanje i raskidanje veze sa bazom podataka u sluaju da se radi sa
DrajverManager-om. Sa jednom konekcijom se moe istovremenom postavljati vie upita i jedna
konekcija se moe viestruko koristiti. Praktino moe se na poetku programa otvoriti jedna
konekcija i na kraju zatvoriti.

Rad sa DataSource

U sluaju da se eli uspostaviti skup konekcija iz kog e se po potrebi traiti i vraati konekcija tada se
mora koristiti drugaiji nain rada. Uspostavljanje konekcije je spora operacija tako da je bolje imati
skup pripremljenih konekcija nego svaki as otvorati i zatvarati konekcije na bazu podataka. Ovaj
nain rada je elegantniji i laki.

Metoda open

Ova korisnika metoda priprema osobine konekcije pravi skup konekcija.

public synchronized void open() throws Exception {


// Using commons-dbcp's BasicDataSource
try {
dataSource = new BasicDataSource(); // instanciranje klase BasicDataSource
dataSource.setDriverClassName(driver); // setovanje naziva driver-a
dataSource.setUrl(url); // setovanje URL-a
dataSource.setUsername(korisnik); // setovanje naziva korisnika
dataSource.setPassword(sifra); // setovanje sifre
// setovanje minimalnog, maksimalnog broja konekcija kao i vremena ekanja
// za uspostavu konekcije
dataSource.setMaxIdle(dbConnectionsMinCount);
dataSource.setMaxActive(dbConnectionsMaxCount);
dataSource.setMaxWait(dbConnectionMaxWait);
} catch (Exception e) {
e.printStackTrace();
}
}

Za uspostavljanje skupa konekcija koristi se klasa BasicDataSource koja se moe skinuti sa interneta.
Nakon instanciranja instance ove klase postavljaju se parametri konekcije.

Metoda getConnection

Ova korisnika metoda daje jednu vezu prema bazi podataka a na osnovu unaprijed pripremljenih
parametara.
public Connection getConnection() {
connection = null;
try {
connection = dataSource.getConnection();
}
catch (SQLException e) {
System.out.println("Greska - konekcija");
}
return connection;
}

Broj konekcija koje se mogu uspostaviti je definisan vrijednosti osobina u metodi open. Uvijek je
otvoren i pripremljen minimalni broj konekcija a po potrebi se otvara do broja definisanog sa
maksimalni broj konekcija. Vrijeme konekcije je definisano sa odgovarajuim parametrom stim da
ako je on -1 vrijeme ekanja je neogranieno.

Metoda closeConnection

Ova korisnika metoda zatvara rad sa bazom podataka i vra konekciju u skup konekcija spremnih za
slijedeu upotrebu.

Public void closeConnection() {


try {
dataSource.close();
}
catch (SQLException e) {
System.out.println("Greska - konekcija");
}
}

Upostavljanje konekcije

Ako se radi sa driverManager-om uspostava konekcije se radi na slijedei nain:

public static void main(String[] args) {


V1Konekcija db = new V1Konekcija();
try {
db.loadDriver(); \\ napuni klasu drajver
db.connect(); \\ uspostavi konekciju - konekcija
........
db.diskonekt(); \\ raskini konekciju - konekcija
} catch (Exception e) {
e.printStackTrace();
}
}

Ako se radi sa skupom konekcija

public static void main(String[] args) {


V1Konekcija db = new V1Konekcija();
try {
db.open();
db.getConnection();
....
db.closeConnection();
} catch (Exception e) {
e.printStackTrace();
}
}

Primjer je dat u klasi V!Konekcija u okviru koje se uspostavlja konekcija sa bazom podataka i sa kojim
se kreira baza podataka kao i jedna tabela.

Metoda getStatement

Ova korisnika metoda kreira objekat klase Statement pomou koje se izvravaju naredbe poslane ka
bazi podataka.

public Statement getStatement() {


try {
// za datu konekciju kreira i vraa objekat klase Statement
iskaz = konekcija.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
return iskaz;
}

Ova metoda moe imati i parametar konekcija kau u slijedeem primjeru

public Statement getStatement(Connection konekcija) {


try {
// za datu konekciju kreira i vraa objekat klase Statement
iskaz = konekcija.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
return iskaz;
}

Metoda createDatabase

Ova korisnika metoda kreira novu bazu podataka u sistemu baza podataka na koju ukazuje URL.

public void createDatabase() {


try {
iskaz.executeUpdate("CREATE DATABASE Test2");
} catch (SQLException e) {
e.printStackTrace();
}
}
Metoda executeUpdate klase Statement (instanca iskaz) koristi se da se sistemu za upravljanje bazi
podataka proslijedi SQL naredba koja, ako je ispravna, izvrava se u tom sistemu. U ovom sluaju to je
naredba:

CREATE DATABASE Test2

Koja kreira novu bazu podataka pod nazivom Test2.

Metoda dropDatabase

Ova korisnika metoda brie bazu podataka u sistemu baza podataka na koju ukazuje URL.

public void dropDatabase() {


try {
iskaz.executeUpdate("DROP DATABASE Test2");
} catch (SQLException e) {
e.printStackTrace();
}
}

You might also like