Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC...

Post on 30-Jun-2020

22 views 0 download

Transcript of Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC...

www . i t s c i .m ju . ac . t h / sayan

JDBC SAYAN UNANKARD1/2562

5

WHAT IS JDBC?

พฒนาขนโดย Javasoft ในป 1996 และไดรบการยอมรบอยางแพรหลาย

JDBC ยอมาจากค าวา Java Data Base Connectivity API ซงเปนเครองมอทใชเปนพนฐานส าหรบนกพฒนาในการตดตอกบ data sourceโดยมโครงสรางทถกออกแบบมาเพอยอมใหนกพฒนาในการโปรแกรม ส าหรบเปนมาตรฐานในการตดตอและยอมใหระบบฐานขอมลทแตกตางกนสามารถใช low-level JDBC เพอใชส าหรบการเชอตอและการ query ของระบบฐานขอมล

เนองจาก JDBC มความยดหยนคอนขางมาก นกพฒนาจงไมจ าเปนตองกงวลเกยวกบการตดตอกบSQL ส าหรบแตละฐานขอมล database หรอสญเสยคณสมบตบางประการส าหรบระบบฐานขอมลทเปนเปาหมาย

2

Database

JDBC API

Java Application

JDBC Driver Manager

Vendor-Supplied

JDBC Driver

JDBC/ODBCBridge

Database ODBC Driver

JDBC Driver API

JDBC TECHNOLOGY DRIVERS

3

ใชแนวความคดในการพฒนาแบบ ODBC

ไดรบการสนบสนนจากผผลต DBMS รายใหญ เชน Oracle, DB2, SQL Server, Sybase, Informix

ขอดของ JDBC• ถกพฒนาขนจาก Java – “Write once, run anywhere”

• ไมจ าเปนตองตดตงลงบนฝง client

JDBCExtension

API SPIApplication Program

DBMS vendor-provided or third-party JDBC driver

JDBC

4

THE JDBC-ODBC BRIDGE

• ODBC (Open Database Connectivity) เปนเทคโนโลยของ Microsoft ทเกดขนในชวงกลางของทศวรรษ 1990’s.

• เปน API ทยอมใหโปรแกรมทเขยนดวย C/C++ สามารถประมวลผลค าสง SQL ภายในระบบฐานขอมลได

• สวน JDBC-ODBC bridge จะยอมใหโคดจาวาสามารถใช C/C++ interface ของ ODBC ได

• ขนตอนในการแปลงโคดจะไดจาก Java --> C --> SQL) ซงอาจมผลตอเวลาในการประมวลผล

• ODBC driver ส าหรบ Microsoft Access ถกจดจ าหนายมาพรอมกบ MS Office

5

PROGRAMMING WITH JDBC

ขนตอนในการโปรแกรมดวย JDBC• โหลด driver ของระบบฐานขอมล (may be)

• ตดตงการ connection

• ประมวลผล SQL statements

• โปรเซสผลลพธตาง ๆ (if needed)

• ปดการ connection (may be)

6

JDBC

Type I“Bridge”

Type II“Native”

Type III“Middleware”

Type IV“Pure”

ODBCODBCDriver

CLI(.lib)

MiddlewareServer

JDBC DRIVERS

7

TYPE OF JDBC DRIVER

ถกจ าแนกออกเปน 4 แบบ:

Type 1 JDBC-ODBC bridge drivers • ใชการ connect ระหวาง Java client ไปยงระบบฐานขอมลโดยผาน ODBC drivers แบบ

Type 1 ตองการ non-Java software ในการตดตงบนเครองทใชส าหรบรนโคด และโดยปกตจะถก implemented โดยใช native code เชน C/C++

Type 2 Native-API partly Java drivers • ใช code library ในการเขาถงฐานขอมล โดยการเรยกผาน Java ไปยง library โดยType 2

จะถก implemented โดย native code ดงนนจงสามารถท างานไดดกวา Java ปจจบนคอนขางลาสมยแลว เชน e.g. Intersolv Oracle Driver

8

TYPE OF JDBC DRIVER

Type 3 Net-protocol All-Java drivers • เปนการใชเนตเวรคโปรโตคอลเพอตดตอกบสวนทเปน middleware ซงอาจเปน driver ชนด

อน ๆ ทไดจดเตรยมไวส าหรบการเขาถงฐานขอมล เชน BEA's WebLogic ทม drivers โดยเฉพาะส าหรบทจะใชกบ applet หรอ Symantec DBAnywhere

Type 4 Native-protocol All-Java drivers

• จะถกเขยนโดย Java ทงหมด โดย Driver แบบนจะเขาใจถงเนตเวรคโปรโตคอลทใชกบระบบฐานขอมลโดยเฉพาะ และสามารถเขาถงระบบฐานขอมลไดโดยตรง drivers แบบนจะม Java security manager ทยอมให TCP/IP สามารถเชอมตอกบ database server ได Oracle, mSQL

9

Type 1Type 2

Type 1 : Drivers ในรปของจาวาโคดทสามารถ connect กบ Java client ไปยงฐานขอมลทไมใชจาวา เชน ODBC

Type 2 : ใชกบ code libraries โดยเรยกใชผาน Java code ทเปน JDBC

JDBC DRIVER TYPES

10

Type 4Pure Java

Type 3

Type 3 : โคดจาวาทงหมดจะเชอมตอเขากบ middleware ในการเขาถงฐานขอมลผานโปรโตคอลเนตเวรค

Type 4 : เปน Java JDBC ทงหมดทถกสรางขนเพอเขาถงฐานขอมลโดยตรง และอาจใหบรการแก networking middleware

JDBC DRIVER TYPES

11

JDBC PSEUDOCODE

การโปรแกรมกบ JDBC จะตองมขนตอนดงตอไปน :1) โหลด JDBC driver

2) ระบชอและต าแหนงของระบบฐานขอมลทตองการใช

3) เชอมตอเขากบระบบฐานขอมลโดยอาศย Connection object

4) ประมวลผลชดค าสง SQL query โดยใช Statement object

5) รบคาผลลพธจากการท างานในรปของ ResultSet object

6) สนสดการท างานโดยการปด ResultSet, Statement และ Connection objects

12

PSEUDO CODE AS A DIAGRAM

DriveManager

Connection Statement ResultSet

createscreates creates

Driver

SQL

SQL

data

data

make linkto driver

13

WHAT YOU EXPECT IN DB API

1. Open a Connection

2. Send a statement

3. Retrieve results

4. Close a connection 1. Create a connection Session

2. Execute statement

3. Send results

4. Close the session

Java Application

DBMS Engine

Java DB API

14

Java Application

JDBC Manager

JDBC Drivers

JDBC API

JDBC Driver API

Data Sources

Grey Area

BIG PICTURE

15

CallableStatement

<<Interface>>

Statement

<<Interface>>

DriverManager

<<Singleton>>

PreparedStatement

<<Interface>>

Connection

<<Interface>>

ResultSet

<<Interface>>

ResultSetMetaData

<<Interface>>DatabaseMetaData

<<Interface>>

JDBC INTERFACE CLASSES

java.sql.* ไดจดเตรยมคลาสไวส าหรบใชงานรวมกบฐานขอมลดงน

16

JDBC OBJECT CLASSES

DriverManager• ใชส าหรบการโหลด หรอ เลอก drivers

Driver• ใชส าหรบการตดตอกบระบบฐานขอมล

Connection• เปนชดค าสงของ SQL statements ทใชกบ DB

Statement• เปนค าสงเดยวของ SQL statement

ResultSet• records ทคนมาจากการท างานของ SQL Statement

17

THE JDBC STEPS

1. Importing Packages

2. ตดตง JDBC Drivers

3. เปด Connection ไปยงฐานขอมล

4. สราง Statement Object

5. ประมวลผล Query และคนคาในรปของ Result Set Object

6. โปรเซส Result Set

7. ปดการท างานของ Result Set และ Statement Objects

8. ปดการ Connection

18

CONNECTING TO DATABASE WITH JDBC

19

LOADING THE DATABASE DRIVER

Class.forName(driverName).newInstance();

driverName เปนชอของแพคเกจและคลาสของ driver เชน Class.forName("jdbc.SimpleText.SimpleTextDriver").newInstance();

ต าแหนงของฐานขอมลจะถกระบโดย URL ตามรปแบบดงตอไปน: < protocol>:< subprotocol>:< subname>

ในกรณทมการตดตง Data Source ไวเรยบรอยแลว การโหลด driver ของระบบฐานขอมลท าไดโดย explicitlyClass.forName(dbDriverClassName);

20

jdbc:odbc : // host.domain.com: 1511 /data/file

The commsprotocol

The machineholding the database.

The portused for the connection.

The path tothe databaseon the machine

e.g. jdbc:odbc:Books

ODBC DATABASE URL

21

ESTABLISHING A CONNECTION

เมอ Driver ถกโหลดและ URL ถกสรางขน ขนตอนตอไปจะเปนการ connect ไปยงระบบฐานขอมลทถกระบภายใน URL โดยใชเมธอด getConnection() จากคลาส DriverManager

การสราง connection จะท าไดดงตอไปนConnection conn =

DriverManager.getConnection(dbUrl, dbUser, dbPass);

dbUrl เปนคาทถกระบโดย vendor แตโดยปกตจะท าการระบดงน :jdbc:driverName://host:port/databaseName

พารามเตอรตวแรกจะเปน URL ทถกสรางขน

พารามเตอรตวถดมาจะเปน Properties object ทมคา configuration ส าหรบระบบฐานขอมล เชน date format หรอต าแหนงของ tables

22

CONNECTION

ออปเจคทคนคาจากเมธอด getConnection() จะเปน Connection object ทใชส าหรบฐานขอมลทใชส าหรบการสงค าสง SQL queries หรอใชในการ updates ฐานขอมล

ในกรณทเกดความผดพลาดจะ Throws java.sql.SQLException

Connection เปนการน าเสนอ session รวมกบฐานขอมลทถกระบ

ภายใน context ของ Connection สวนทเปน SQL statements จะถกประมวลผลและคนคาผลลพธออกมา

นอกจากนนยงจดเตรยม “metadata” -- ขอมลทเกยวกบ database, tables, และ fields

รวมไปถงวธการทใชรวมกบ transactions

23

OBTAINING A CONNECTION

String url = "jdbc:mysql://localhost:3306/MyDB?characterEncoding=UTF-8";

String uname = "root";

String pwd = "itmju";

Connection con;

try {

Class.forName("com.mysql.jdbc.Driver");

con = DriverManager.getConnection(url,uname,pwd);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

} 24

STATEMENT

เมอท าการสราง Connection เรยบรอยแลว ผใชสามารถใชค าสง SQL ในการสงงาน โดยผานStatement objects ซงใน JDBC จะแบงออกเปนสามชนด:• Statement

ใชส าหรบน าเสนอค าสง SQL แบบพนฐาน• PreparedStatement

น าเสนอค าสง SQL ทถกคอมไพลไวแลว ซงจะชวยเพมประสทธภาพในการท างานไดเรวขน• CallableStatement

ยอมให JDBC programs สามารถเขาถง stored procedures ภายในฐานขอมลไดอยางสมบรณ

25

STATEMENT CLASS

ออปเจคของคลาส Statement จะรบคาพารามเตอรในรปของ string ทมค าสง SQL ทใชในการประมวลผล

Statement จะถกสรางขนโดยการเรยกใชเมธอด createStatement() จากคลาส Connection ซงจะคนคาในรปของ Statement object

ค าสง SQL จะถกประมวลผลโดยสราง string ของ SQL ทตองการและผานในรปของพารามเตอรไปยงเมธอดของ Statement ซงจะสงผานไปยงฐานขอมลและคนคาผลลพธตอไป

เมธอดของ Statement ทสามารถใชในการประมวลผล SQL statement ในรปของ string จะมสามแบบ คอ: • ResultSet executeQuery(String)• int executeUpdate(String)• boolean execute(String)

26

STATEMENT OBJECT

Statement object ถกใชส าหรบการประมวลผลในรปของ static SQL statement และรบคาผลลพธทถกสรางขน

ResultSet executeQuery(String)

ประมวลผล SQL statement ทคนคาในรปของ ResultSet เดยว

int executeUpdate(String)

ในกรณทไมตองการคนคาจากการใชค าสง SQL Statement ไดจดเตรยมเมธอดexecuteUpdate( ) ไว โดยใชกบค าสงประเภท UPDATE และ DELETE

เมธอด executeUpdate( ) จะคนคา integer ซงแสดงถงจ านวนแถวในฐานขอมลทเกยวของ

27

STATEMENT OBJECT

boolean execute(String) • ในกรณทไมทราบวา SQL statement จะคนคาอะไรออกมา อาจใชเมธอด execute( ) ได

เมธอดนจะคนคา true หากมผลลพธทเกยวของกบ statement นน ๆ

การรบคา Statement object สามารถท าไดโดยการเรยกใชเมธอด createStatement() ของConnection:

Statement stmt = con.createStatement();

28

SAMPLE DATABASE

Employee ID Last Name First Name

1 Davolio Nancy

2 Fuller Andrew

3 Leverling Janet

4 Peacock Margaret

5 BuchananSteven

Connection con = DriverManager.getConnection(url,"alex", "8675309");

Statement st = con.createStatement();

ResultSet results = st.executeQuery("SELECT EmployeeID, LastName, FirstName FROM Employees");

29

การใชงาน STATEMENT OBJECT

เมอสราง Statement เสรจแลว ขนตอนตอไปจะเปนการประมวลผลค าสง SQL ซง statement สามารถจะอยในรปของ query ทคนคาผลลพธหรอการท างานท manipulates ในฐานขอมล ในกรณทใชการ query จะเรยกใชเมธอด executeQuery( ) ของ Statement object เชนResultSet rs = stmt.executeQuery("SELECT * FROM CUSTOMERS");

ResultSet object จะเกบคาผลลพธทไดจากการ query

30

RESULTSET OBJECT

Statement stmt = dbCon.createStatement();

String sql = "select * from " + table;

ResultSet rs = stmt.executeQuery(sql);

ขอมลภายในตารางสามารถน าเสนอผาน result set ซงจะถกสรางขนจากการประมวลผลของqueries

มเพยง 1 ResultSet ตอ Statement ทสามารถเปดขนไดในครงหนง ๆ

โดย default แลว ResultSet object จะไมสามารถท าการ update ได และ cursor จะเลอนต าแหนงไปไดเฉพาะการเดนหนาเทานน ดงนนจงสามารถเลอนต าแหนงจากแถวแรกไปยงแถวสดทายไดเพยงครงเดยว

31

RESULTSET

การท างานของ ResultSet object จะท าไดโดยการ maintains ต าแหนงของ cursor ทชไปยงแถวปจจบนของขอมล โดยคาเรมตนจะชไปยงต าแหนงกอนหนาของขอมลแถวแรก และเลอนต าแหนงไปไดโดยการเรยกใชเมธอด next() ดงนนจงสามารถใชรวมกบ while loop เพอน าเสนอผลลพธแบบตอเนองได

23

5

17

98

John

Mark

Paul

Peter

cursor

32

ACCESSING COLUMN DATA

การคนหา Rows โดยอาศยเมธอด executeQuery() จะมการคนคาออปเจคทม type เปน ResultSet

Rows ทถกรบคาจาก ResultSet สามารถใชการท างานแบบ iteration ผานลงไปในแตละ rows และอานขอมลในแตละคอลมนออกมา

การ Iteration แตละ rows จะท างานเชนเดยวกบการ iterating ผาน elements ในรปของEnumeration object ในการรบคา row แรกภายใน ResultSet จะสามารถท าไดโดยการเรยกใชเมธอดnext()

• boolean next()

• เมธอดคนคา false ในกรณทไมมขอมลอกตอไป เชน :

while(rs.next()){// process the row;

}

33

PROCESS RESULTSET

เมอเรมตนท างานกบ ResultSet ต าแหนงของ cursor จะอยในต าแหนงกอนแถวแรกของผลลพธ นนกหมายความวาการเรยกใชเมธอด next( ) ครงแรกจะเปนการเขาถงแถวแรก

แตละคอลมนอาจประกอบไปดวยชนดของขอมลทแตกตางกน การใช ResultSet เมธอดจงจ าเปนตองมการก าหนด datatype ใหถกตอง

เมธอดประเภททชอขนตนดวย getXXX() จะใชส าหรบการรบคาในรปของ เรคคอรดปจจบน เชน• การรบคา column ดวยคาแบบ integer จะตองใชเมธอด

getInt(int column)

• ขณะทการรบคา column ทเปน string จะใชเมธอด

getString(int column)

34

USING THE RESULTSET OBJECT

เมธอด getXXX( ) จะคนคาชนดขอมลทก าหนด รปแบบของเมธอดประเภทนจะแบงออกไดเปนสองลกษณะ ตามการรบคาพารามเตอร คอ• แบบรบคา case-insensitive ในรปชอของ column ทตองการอานคา (e.g., "PHONE",

"CUSTOMER_ID") • แบบรบคา column indexes ซงจะเรมตงแต 1 ถง n columns.

ResultSet rs = stmt.getResultSet();

while (rs.next()) {

writer.print(rs.getLong("ID"));

writer.print(rs.getString("Name"));

writer.print(rs.getDouble(5));

}

35

EXAMPLE OF ACCESSING COLUMNS WITHIN ROWS:

Statement stmt = dbCon.createStatement();

String sql = "select * from " + table;

ResultSet rs = stmt.executeQuery(sql);

while (rs.next()) {

String name = rs.getString(1);

int age = rs.getInt(2);

System.out.println(name + " " + age);

}

rs.close();

36

RESULTSET METHODS

String getString(int columnIndex)

boolean getBoolean(int columnIndex)

byte getByte(int columnIndex)

short getShort(int columnIndex)

int getInt(int columnIndex)

long getLong(int columnIndex)

float getFloat(int columnIndex)

double getDouble(int columnIndex)

Date getDate(int columnIndex)

Time getTime(int columnIndex)

Timestamp getTimestamp(int columnIndex)

37

RESULTSET METHODS

Type getType(int columnIndex)• คนคา the given field as the given type เรมตนท 1 (not 0)

Type getType(String columnName)• same, but uses name of field

int findColumn(String columnName)• looks up column index given column name

void close() • ใชส าหรบการ disposes ของ ResultSet• ยอมใหผใชสามารถ re-use Statement ทถกสรางขนไวแลว• ถกเรยกใชไดโดยอตโนมตจากเมธอดสวนใหญของ Statement

38

EXECUTEXXX() LIMITATION

ขอส าคญทตองระลกไวเสมอคอ Statement object จะน าเสนอขอมลจากการประมวลผลค าสง SQL ไดเพยงค าสงเดยว

การเรยกใชเมธอด executeQuery( ) executeUpdate( ) หรอ execute( ) จะมผลท าใหสนสดการท างานของ ResultSet ทเกยวของกบค าสงปจจบน ดงนนกอนการเรยกใชเมธอดเหลานจะตองแนใจไดวาการท างานกบผลลพธเสรจสนสมบรณแลว กอนการประมวลผลของ query ดวย Statement object เดม

ในกรณทจ าเปนตองมการประมวลผล query มากกวาหนงครง จ าเปนจะตองใช multiple Statement objects

39

RESULTS

ขอมลในระบบฐานขอมลNAME CUSTOMER_ID PHONE----------------------------------------------------------------------Jane Markham 1 617 555-1212Louis Smith 2 617 555-1213Woodrow Lang 3 508 555-7171Dr. John Smith 4 615 428-1239

ผลลพธทตองการ :Customer #1, Jane Markham, is at 617 555-1212

Customer #2, Louis Smith, is at 617 555-1213Customer #3, Woodrow Lang, is at 508 555-7171Customer #4, Dr. John Smith, is at 615 428-1239

40

PROCESS RESULTSET

เมอมการประมวลผล SQL ผลลพธทไดจะเปนไปตามเงอนไขทก าหนดอยใน query เสมอStatement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery( "SELECT NAME, CUSTOMER_ID, PHONE

FROM CUSTOMERS");

while(rs.next()) {

System.out.print("Customer #" + rs.getString("CUSTOMER_ID"));

System.out.print(", " + rs.getString("NAME"));

System.out.println(", is at " + rs.getString("PHONE"));

}

rs.close();

stmt.close();

41

SELECT EXAMPLE

Connection con = DriverManager.getConnection(url, "alex", "8675309");

Statement st = con.createStatement();

ResultSet results = st.executeQuery("SELECT EmployeeID, LastName,

FirstName FROM Employees");

while (results.next()) {

int id = results.getInt(1);

String last = results.getString(2);

String first = results.getString(3);

System.out.println("" + id + ": " + first + " " + last);

}

st.close();

con.close(); 42

MAPPING JAVA TYPES TO SQL TYPES

SQL type Java Type

CHAR, VARCHAR, LONGVARCHAR String

NUMERIC, DECIMAL java.math.BigDecimal

BIT boolean

TINYINT byte

SMALLINT short

INTEGER int

BIGINT long

REAL float

FLOAT, DOUBLE double

BINARY, VARBINARY, LONGVARBINARY byte[]

DATE java.sql.Date

TIME java.sql.Time

TIMESTAMP java.sql.Timestamp43

JDBC EXAMPLE

String DB_URL = "jdbc:mysql://localhost/students"; //students คอชอฐานขอมล

String DB_USER = "";

String DB_PASSWORD= "";

Connection conn;

Statement stmt;

String query = "select * from Student";

try {

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);

stmt = conn.createStatement();

ResultSet result = stmt.executeQuery(query);

while(result.next()){

out.println(result.getString(1));

out.println(result.getString(2));

out.println(result.getString(3));

}

44

JDBC EXAMPLE

result.close();

stmt.close();

conn.close();

} catch(Exception e){

e.printStackTrace();

}

45

PREPAREDSTATEMENT CLASS

ออปเจคของคลาส PreparedStatement จะรบคาพารามเตอรในรปของ string ทมค าสง SQL ทใชในการประมวลผล

Statement จะถกสรางขนโดยการเรยกใชเมธอด prepareStatement(sql) จากคลาสConnection ซงจะคนคาในรปของ PreparedStatement object

ค าสง SQL จะถกประมวลผลโดยสราง string ของ SQL ทตองการและผานในรปของพารามเตอรไปยงเมธอดของ PreparedStatement ซงจะสงผานไปยงฐานขอมลและคนคาผลลพธตอไป

เมธอดของ PreparedStatement ทสามารถใชในการประมวลผล SQL statement ในรปของ string จะมสองแบบ คอ: • ResultSet executeQuery()• ResultSet executeQuery(String)

46

SAMPLE DATABASE

Employee ID Last Name First Name

1 Davolio Nancy

2 Fuller Andrew

3 Leverling Janet

4 Peacock Margaret

5 Buchanan Steven

Connection con = DriverManager.getConnection(url,"alex", "8675309");

String sql = "SELECT EmployeeID, LastName, FirstName FROM Employees";

PreparedStatement stmt = con.prepareStatement(sql);

ResultSet rs = stmt.executeQuery();

เหมาะส าหรบค าสง Select ทไมมเงอนไข Where หรอ Having

47

CALLABLESTATEMENT CLASS

ออปเจคของคลาส CallableStatement จะรบคาพารามเตอรในรปของ string ทมค าสงในการเรยกใช stored procedure หรอ function ในฐานขอมล

Statement จะถกสรางขนโดยการเรยกใชเมธอด

prepareCall({call stored procedure{parameter,?,?,?}}) จากคลาส Connection ซงจะคนคาในรปของ CallableStatement object

เมธอดของ CallableStatement ทสามารถใชในการประมวลผลในรปของ string จะมหลายแบบ แตจะยกตวอยางเพยง สองแบบคอ• boolean execute()

• boolean execute(String sql)

48

CALLABLESTATEMENT CLASS

กรณทมการสง parameter เขาไปใน stored procedure สามารถเรยกใชเมธอด setXXX(index, value) เขาไปไดเชน• stmt.setInt(1, 200);

• stmt.setString(2,"Sayan Unankard");

โดย index เรมทต าแหนงท 1 เสมอ

49

STORED PROCEDURE DATABASE : MYSQL

DELIMITER $$

CREATE PROCEDURE insertEmployee (IN empid INT, IN empname VARCHAR(30),

IN salary FLOAT, IN deptid INT )

BEGIN

INSERT INTO Employee VALUES(empid,empname,salary,deptid);

END$$

DELIMITER ;

Connection con = DriverManager.getConnection(url,"alex", "8675309");

CallableStatement cstmt = con.prepareCall("{call insertEmployee(?,?,?,?)}");

cstmt.setInt(1, 300);

cstmt.setString(2, "sayan unankard");

cstmt.setDouble(3, 25000.00);

cstmt.setInt(4, 1);

cstmt.execute();

con.close;50