Professional Documents
Culture Documents
2 - JDBC
2 - JDBC
Driver
ُياك أربؼة أهواع من اًـ Driversاًيت ميىن اس خخداهما ًربط اًربانمج مع كواػد اًبَاانت:
.JDBC-ODBC Bridge Driver -
Native-API Driver -
.Network Protocol Driver -
Thin Driver -
اًـ ً JDBC-ODBC Bridge Driverلوم بخحوًي أوامر JDBC APIاىل أوامر ًفِمِا اًـ ODBC Driverو اذلي بدورٍ ًلوم
بربط اًربانمج بلاػدة اًبَاانت .وًؼخرب سِي الس خخدام و ميىن ربعَ بسِوةل مع أي كاػدة بَاانت.
أدائَ ًؼخرب بعئي حِر أهَ ًلوم بخحوًي أوامر اًـ JDBCاىل أوامر ODBCيف لك معََة ًمت احراءُا مع كاػدة اًبَاانت.
.اجلدول اًخايل ًوحض ظرًلة اًخؼامي مع بؼظ كواػد اًبَاانت
و,forName() ٌدلاةلArgument اذلي جيب أن ثضؼَ نـDriver ملؼرفة امس,اخذَار امس كاػدة اًبَاانت و رابط اًوضول ًِا
.getConnection() ٌدلاةلArgument ظرًلة نخابة رابط اًوضول ًِا و اذلي جيب أن ثضؼَ نـ
Class املوحودة يف اًــforName() املالمئ ًالثطال بلاػدة اًبَاانت اًيت سُمت اًخؼامي مؼِا و وس خخدم ادلاةلDriver حتدًد امس اًـ
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver "(
. ) اذلي سريبط اًربانمج بلاػدة اًبَاانتDriver ُو هص ميثي امس اًالكس ( أي اًـclassName اًـ
. يف حال ػدم وحود ثوافق بني أهواد اًالكسات املس خخدمة يف معََة ربط اًربانمج مع كواػد اًبَاانتLinkageError
. يف حال حدث خعأ غيد خَق اًاكئنExceptionInInitializerError
. يف حال اكن اًالكس اذلي مقيا بمترٍرٍ غري موحودClassNotFoundException
و اًيت,DriverManager املوحودة يف اًالكسgetConnection() ًبدء معََة الثطال بلاػدة اًبَاانت وس خخدم ادلاةل اًثابخة
. ميثي الثطال اًلامئ بني اًربانمج و كاػدة اًبَاانتConnection َحرحع اكئن هوػ
String url = jdbc:sqlserver://localhost\\sqlexpress:1433;databaseName;";
غرض مجَع السامء اًيت مت ختزٍهنا يف اًاكئن ,rsوس خخدم أي حَلة اكًخايل.
{))(while(rs.next
;) )"System.out.println( rs.getString("name
بؼد الىهتاء من اًخؼامي مع كاػدة اًبَاانت جيب كعع الثطال بلاػدة اًبَاانت .و لغالق الثطال مع كاػدة اًبَاانت وس خدغي
ادلاةل )( closeاملوحودة يف الهرتفُس " " Connectionػىل اكئن اًـ Connectionو اًيت ثلوم بهناء الثطال مع اكئن
اًـ Statementو اكئن اًـ ResultSetبشلك ثَلايئ .و كعع الثطال مع كاػدة اًبَاانت ًمت اكًخايل ;)(con.close
Interface or class
class DriverManager
1اًالكس DriverManagerمطمم ًخحدًد املؼَومات الساس َة اًيت حنخاهجا ًالثطال بلاػدة اًبَاانت مثي ( امس
اًـ Driverاذلي سًس خخدمَ ,امس كاػدة اًبَاانت ,امس املس خخدم و لكمة مرورٍ ).
interface Connection
2الهرتفُس Connectionمطمم لوشاء اثطال بني اًربانمج و كاػدة اًبَاانت بلغامتد ػىل املؼَومات اًيت مت حتدًدُا فَِ يف
اكئن اًـ .DriverManager
interface DatabaseMetaData
3الهرتفُس ً DatabaseMetaDataوفر مجموػة خضمة من ادلوال اًيت ميىن اس خخداهما ملؼرفة مؼَومات مذؼَلة بلاػدة اًبَاانت
اًيت ثخؼامي مؼِا.
interface Statement
4الهرتفُس Statementمطمم لرسال الس خؼالمات اًثابخة اًيت ل ثخغري اىل كاػدة اًبَاانت ,أي ميىٌم اس خخدامَ يف حال نيت
حرًد ثيفِذ هفس أوامر اًـ SQLيف لك مرة ثلوم فهيا بدشغَي اًربانمج.
interface PreparedStatement
5الهرتفُس ٍ PreparedStatementرث من الهرتفُس ,Statementمت ثطمميَ لرسال اس خؼالمات اىل كاػدة اًبَاانت أزياء
معي اًربانمج ,نام أهَ ميىن اس خخدامَ ًخيفِذ هفس أوامر اًـ SQLػدة مرات.
interface ResultSet
6الهرتفُس ResultSetمطمم ًخخزٍن أي بَاانت ًمت خَهبا من كاػدة اًبَاانت همام اكن هوغِا.
interface ResultSetMetaData
7الهرتفُس ٌ ResultSetMetaDataس خخدم ملؼرفة مؼَومات ثخؼَق بجلدول ( أو اجلداول ) اخملزهة يف اكئن اًـ ,ResultSet
مثي:
أسامء اجلداول اخملزهة فَِ.
ػدد المعدة اخملزهة فَِ.
أسامء المعدة اخملزهة فَِ.
أهواع اًبَاانت اًيت ميىن ختزٍهنا يف المعدة .
اًالكس DriverManagerمطمم ًخحدًد املؼَومات الساس َة اًيت حنخاهجا ًالثطال بلاػدة اًبَاانت مثي:
-امس اًـ Driverاذلي سًس خخدمَ.
-امس كاػدة اًبَاانت.
-امس املس خخدم يف كاػدة اًبَاانت.
-لكمة مرور املس خخدم يف كاػدة اًبَاانت.
Methods
)public static Connection getConnection(String url
حتدد رابط اًـ Driverاذلي سًس خخدمَ ًربط اًربانمج بلاػدة اًبَاانت.
1
اًـ ُ urlو هص ٍىذب هبذا اًشلك jdbc:subprotocol:subnameو ميثي رابط اًوضول اىل كاػدة اًبَاانت.
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)public static Connection getConnection(String url, String name, String password
حتدد رابط اًـ Driverاذلي سًس خخدمَ ًربط اًربانمج بلاػدة اًبَاانت مع حتدًد امس املس خخدم و لكمة مرورٍ اًيت جسمح هل
بًوًوج اىل كاػدة اًبَاانت.
2اًـ ُ urlو هص ٍىذب هبذا اًشلك jdbc:subprotocol:subnameو ميثي رابط اًوضول اىل كاػدة اًبَاانت.
اًـ ُ nameو هص ميثي امس املس خخدم يف كاػدة اًبَاانت.
اًـ ُ passwordو هص ميثي لكمة مرور املس خخدم يف كاػدة اًبَاانت.
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)public static Connection getConnection(String url, Properties info
حتدد رابط اًـ Driverاذلي سًس خخدمَ ًربط اًربانمج بلاػدة اًبَاانت مع حتدًد امس املس خخدم و لكمة مرورٍ اًيت جسمح هل
بًوًوج اىل كاػدة اًبَاانت.
3اًـ ُ urlو هص ٍىذب هبذا اًشلك jdbc:subprotocol:subnameو ميثي رابط اًوضول اىل كاػدة اًبَاانت.
اًـ infoغبارة غن اكئن هوػَ Propertiesميثي مؼَومات نثرية مذؼَلة بلثطال بلاػدة اًبَاانت و جيب أن حيخوي ػىل الكي امس
املس خخدم لكمة مرورٍ يف كاػدة اًبَاانت..
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
مطمم لوشاء اثطال بني اًربانمج و كاػدة اًبَاانت بلغامتد ػىل املؼَومات اًيت مت حتدًدُا فَِ يف اكئن اًـ .DriverManager
مالحظة :اكئن اًـ ً Connectionلوم بشلك ثَلايئ حبفغ مجَع اًخغريات اًيت حتدث يف كاػدة اًبَاانت من كبي املس خخدم.
Methods
)(public Statement createStatement
حرحع اكئن هوػَ Statementمن اكئن اًـ Connectionاذلي كام بس خدػاهئا.
ميىن اس خخدام اكئن اًـ Statementاذلي مت ارخاػَ لرسال اس خؼالمات اثبخة اىل كاػدة اًبَاانت. 1
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت أو يف حال اكن اكئن
اًـ Connectionمغَل ًا.
)public PreparedStatement prepareStatement(String sql
حرحع اكئن هوػَ PreparedStatementمن اكئن اًـ Connectionاذلي كام بس خدػاهئا.
ميىن اس خخدام اكئن اًـ PreparedStatementاذلي مت ارخاػَ لرسال اس خؼالمات غري اثبخة اىل كاػدة اًبَاانت. 2
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت أو يف حال اكن اكئن
اًـ Connectionمغَل ًا.
)public void setAutoCommit(boolean autoCommit
افرتاضَ ًا ,اكئن اًـ ً Connectionلوم بشلك ثَلايئ حبفغ مجَع اًخغريات اًيت حتدث يف كاػدة اًبَاانت من كبي املس خخدم.
يف حال مقت بس خدػاء ُذٍ ادلاةل من كبي اكئن اًـ Connectionو مقت بمترٍر اًلمية ًِ falseا ماكن
اًبارامِرت ,autoCommitغيدُا ًن ًلوم حبفغ اًخغريات اًيت حتدث يف كاػدة اًبَاانت بشلك ثَلايئ .و س َىون ػََم 3
اس خدػاء ادلاةل )( commitحلفغ اًخغريات.
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت أو يف حال اكن اكئن
اًـ Connectionمغَل ًا.
)(public void commit
يف حال مت حؼي اًاكئن اًـ Connectionل ًلوم حبفغ اًخغريات اًيت جنرهيا يف كاػدة اًبَاانت بشلك ثَلايئ ,جيب اس خدػاء
ُذٍ ادلاةل من كبي اكئن اًـ Connectionحلفغ مجَع اًخغريات اًيت حدزت. 4
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت أو يف حال اكن اكئن
اًـ Connectionمغَل ًا أو يف حال اكن اكئن اًـ Connectionأض ًال حيفغ اًخغريات اًيت حتدث بشلك ثَلايئ.
)(public void rollback
يف حال اكن اكئن اًـ ً Connectionلوم حبفغ اًخغريات اًيت جنرهيا يف كاػدة اًبَاانت بشلك ثَلايئ ,ميىن اس خدػاء ُذٍ ادلاةل
من كبي اكئن اًـ Connectionلًغاء مجَع اًخغريات اًيت حدزت بسبب أخر معََة أحرًت يف كاػدة اًبَاانت. 5
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت أو يف حال اكن اكئن
اًـ Connectionمغَل ًا أو يف حال اكن اكئن اًـ Connectionأض ًال حيفغ اًخغريات اًيت حتدث بشلك ثَلايئ.
)(public void close
6جس خخدم لغالق الثطال مع كاػدة اًبَاانت ,فؼََ ًا ثغَق اكئن اًـ Connectionو مجَع اًاكئيات املرثبعة فَِ.
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)(public DatabaseMetaData getMetaData
حرحع اكئن هوػَ DatabaseMetaDataميثي اكمي مؼَومات الثطال املخؼَلة باكئن اًـ Connectionاذلي كام بس خدػاهئا.
ُذٍ املؼَومات جتؼكل كادر ًا ػىل مؼرفة مجَع خطائص كاػدة اًبَاانت و المعدة و السعر اًيت فهيا ,بلضافة اىل مجَع اًبَاانت
7
املخوفرة حول اًـ Driverاملس خخدم.
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت أو يف حال اكن اكئن
اًـ Connectionمغَل ًا.
الهرتفُس ً DatabaseMetaDataوفر مجموػة من ادلوال اًيت ميىن اس خخداهما ملؼرفة مؼَومات مذؼَلة بلاػدة اًبَاانت اًيت ثخؼامي
مؼِا .مثي:
امس كاػدة اًبَاانت ( .) Database Name -
اضدار كاػدة اًَباانت ( .) Database Version -
رابط اًوضول ًلاػدة اًبَاانت ( .) Database URL -
الوامر املوحودة يف كاػدة اًبَاانت ( .) Database Keywords -
امس اًـ Driverاملس خخدم ( .) Driver Name -
اضدار اًـ Driverاملس خخدم ( .) Driver Version -
أسامء اجلداول املوحودة يف كاػدة اًبَاانت ( .) Tables Names -
امس املس خخدم املخطي بلاػدة اًبَاانت من اًخعبَق ( .) User Name -
ٌَحطول ػىل اكئن DatabaseMetaDataمن اكئن اًـ Connectionوس خدغي ادلاةل )(.getMetaData
Methods
)(public String getUserName
حرحع اٍمس املس خخدم املؼرف يف كاػدة اًبَاانت و املخطي هبا حاًَ ًا من اًخعبَق. 1
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)(public String getDatabaseProductName
حرحع امس اًربانمج اذلي مت بواسعخَ اوشاء كاػدة اًبَاانت. 2
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)(public String getDatabaseProductVersion
حرحع اضدار اًربانمج اذلي مت بواسعخَ اوشاء كاػدة اًبَاانت. 3
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)(public String getDriverName
حرحع امس اًـ Driverاملس خخدم ًالثطال بلاػدة اًبَاانت. 4
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)(public String getDriverVersion
حرحع اضدار اًـ Driverاملس خخدم ًالثطال بلاػدة اًبَاانت. 5
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)(public String getURL
حرحع هص ميثي رابط اًوضول ًلاػدة اًبَاانت أو nullيف حال مل حمتىن من ارخاػَ. 6
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern,
)String[] types
حرحع وضف مجلَع اجلداول املوحودة يف اكاتًوج كاػدة اًبَاانت واكئن من اًالكس .ResultSetلك سعر حرحؼَ ميثي مؼَومات
خدول حمدد.
ميىٌم وضع nullماكن أي برامِرت يف حال نيت ل ثؼرف ماذا جيب أن ثضع.
ماكن اًبارامِرت tableNamePatternميىٌم حتدًد اجلدول اذلي حرًد ارخاع وضف هل.
ماكن اًبارامِرت typesميىٌم حتدًد أهواع اجلداول اًيت حرًد ارخاع وضف ًِا.
ًمت حرثُب مؼَومات المعدة املوحودة يف لك خدول اكًخايل:
7
TABLE_CATو ُو هص ميثي اكاتًوج اجلدول. -
TABLE_SCHEMو ُو هص ميثي اًـ schemaو اًيت يه غبارة غن مجموػة اكئيات متثي كاػدة اًبَاانت املرثبط -
هبا مس خخدم مؼني.
TABLE_NAMEو ُو هص ميثي أسامء اجلداول املوحودة يف كاػدة اًبَاانت. -
TABLE_TYPEو ُو هص ميثي هوع اجلدول و اذلي ميىن أن ٍىون احدى الهواع اًخاًَة: -
(LOCAL ,GLOBAL TEMPORARY ,SYSTEM TABLE ,VIEW ,TABLE
.)SYNONYM ,ALIAS ,TEMPORARY
REMARKS -و ُو هص ميثي اًخؼََلات املوضوػة يف اجلدول.
TYPE_CATو ُو هص ميثي هوع اًاكاتًوج. -
TYPE_SCHEMو ُو هص ميثي هوع اًـ .schema -
TYPE_NAMEو ُو هص ميثي امس اًيوع. -
.SELF_REFERENCING_COL_NAME -
.REF_GENERATION -
بؼظ كواػد اًبَاانت ل حرحع مؼَومات حول مجَع اجلداول املوحودة فهيا.
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
الهرتفُس Statementمطمم لرسال الس خؼالمات اًثابخة اًيت ل ثخغري اىل كاػدة اًبَاانت ,أي ميىٌم اس خخدامَ يف حال نيت حرًد
ثيفِذ هفس أوامر اًـ SQLيف لك مرة ثلوم فهيا بدشغَي اًربانمج.
افرتاضَ ًا ,اكئن واحد من الهرتفُس ResultSetملابي اكئن واحد من الهرتفُس Statementميىن فذحَ يف هفس اًوكت.
ميىن وحود أنرث من اكئن هوػَ ResultSetمفذوح يف هفس اًوكت ,برشط أن ٍىون لك واحد مهنم مرثبط
باكئن Statementخمخَف.
Methods
)(public Connection getConnection
1حرحع اكئن اًـ Connectionاذلي مت من خالهل اوشاء اكئن اًـ Statementاذلي كام بس خدػاهئا.
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)public ResultSet executeQuery(String sql
ثيفذ الس خؼالم اذلي هلوم بمترٍرٍ ًِا نيص يف كاػدة اًبَاانت ,مث حرحع هدِجة الس خؼالم واكئن هوػَ .ResultSet
المر اذلي ميرر ًِا يف اًؼادة ٍىون أمر SELECTاثبت .ل ميىن اس خدػاء ُذٍ ادلاةل من خالل اكئن من
2
الهرتفُس PreparedStatementأو الهرتفُس .CallableStatementحريم الس خثٌاء SQLExceptionيف حال حدث
خعأ غيد حماوةل الثطال بلاػدة اًبَاانت .حريم الس خثٌاء SQLTimeoutExceptionيف حال بلي اكئن اًـ Statementيف
وضؼَة الهخظار حىت ختعى املدة اًيت مت حتدًدُا بواسعة ادلاةل )(.setQueryTimeout
)public int executeUpdate(String sql
ثيفذ الس خؼالم اذلي هلوم بمترٍرٍ ًِا نيص يف كاػدة اًبَاانت.
3حرحع ػدد السعر اًيت مت اضافهتا أو اًخؼدًي ػَهيا .و حرحع 0يف حال اكن الس خؼالم ل ٍرحع يشء.
اهدبَ :ل ميىن اس خدػاء ُذٍ ادلاةل من خالل اكئن من الهرتفُس PreparedStatementأو
الهرتفُس .CallableStatement
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
حريم الس خثٌاء SQLTimeoutExceptionيف حال بلي اكئن اًـ Statementيف وضؼَة الهخظار حىت ختعى املدة اًيت مت
حتدًدُا بواسعة ادلاةل )(.setQueryTimeout
)(public ResultSet getResultSet
حرحع هدِجة الس خؼالم اذلي مقيا برساهل سابل ًا بواسعة اكئن اًـ Statementاذلي كام بس خدػاهئا واكئن هوػَ .ResultSet
حرحع nullيف حال مل ٍرحع الس خؼالم أي هدِجة. 4
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت أو مت اس خدػاءُا ػىل
اكئن Statementمغَق.
)public void addBatch(String sql
ثضَف هص الس خؼالم اذلي منررٍ ًِا نـ Argumentيف لحئة خاضة يف اكئن اًـ Statementاذلي كام بس خدػاهئا .اًِدف
من ُذٍ الاحئة جتمَع الس خؼالمات املراد ارساًِا اىل كاػدة اًبَاانت و ارساهلم دفؼة واحدة مما ٌرسع الداء.
هص الس خؼالم اذلي منررُا ماكن اًبارامِرت ٍ sqlىون غبارة غن أمر INSERTأو .UPDATE
ل ميىن اس خدػاء ُذٍ ادلاةل من خالل اكئن من الهرتفُس PreparedStatementأو الهرتفُس .CallableStatement 5
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت ,أو يف حال مت اس خدػاءُا بؼد أن
مت اغالق اكئن اًـ ,Statementأو يف حال اكن اًـ Driverاملس خخدم ل ًدمع معََة جتمَع الس خؼالمات و ارساًِا دفؼة
واحدة ( ,)Batching Processأو يف حال مت اس خدػاءُا من خالل اكئن من الهرتفُس PreparedStatementأو
الهرتفُس .CallableStatement
)(public int[] executeBatch
حرسي أمر ًليض بدٌفِذ مجموػة أوامر اًـ SQLاملؼدة ًالرسال دفؼة واحدة و بيفس اًرتثُب اذلي مت اضافهتم فهيا بواسعة
ادلاةل )(.addBatch
اذا مت ثيفِذ مجَع الوامر اًيت مت جتِزيُا بواسعة ادلاةل )( ,addBatchحرحع مطفوفة هوغِا int
كمي غيارص ُذٍ املطفوفة حىون احدى ُذٍ الحامتلت:
رمق أنرب أو ٌساوي ضفر ًؤند أن المر كد مت ثيفِذٍ بيجاح .اًرمق غبارة غن ػدد السعر اًيت مت اضافهتا أو حتدًر كميِا.
كمية املخغري SUCCESS_NO_INFOاًيت ميىٌم حتدًدُا بيفسم ,لن ُذا املخغري ُو اثبت جمِز يف
اًالكس ُ .Statementذا اًرمق ًؤند أن ػدد السعر اًيت أضَفت أو مت ثؼدًي كميِا غري مؼروف. 6
كمية املخغري EXECUTE_FAILEDاًيت ميىٌم حتدًدُا بيفسم ,لن ُذا املخغري ُو اثبت جمِز يف
اًالكس Statementأًض ًاُ .ذا اًرمق ًؤند أهَ مل ًمت ثيفِذ مجَع الوامر بيجاح و ًىن اًـ Driverاس متر يف ثيفِذ الوامر
املوضوػة.
ل ميىن اس خدػاء ُذٍ ادلاةل من خالل اكئن من الهرتفُس PreparedStatementأو الهرتفُس .CallableStatement
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
حريم الس خثٌاء SQLTimeoutExceptionيف حال بلي اكئن اًـ Statementيف وضؼَة الهخظار حىت ختعى املدة اًيت مت
حتدًدُا بواسعة ادلاةل )(.setQueryTimeout
)(public void clearBatch
متسح الس خؼالمات اًيت مت جتمَؼِا يف اكئن اًـ Statementاذلي كام بس خدػاهئا.
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت ,أو يف حال مت اس خدػاءُا بؼد أن 7
مت اغالق اكئن اًـ ,Statementأو يف حال اكن اًـ Driverاملس خخدم ل ًدمع معََة جتمَع الس خؼالمات و ارساًِا دفؼة
واحدة (.)Batching Process
)(public void cancel
ثلوم بًغاء الس خؼالم اذلي مت جتِزيٍ يف اكئن اًـ Statementيف حال اكهت كاػدة اًبَاانت و اًـ Driverاملس خخدم ًدغامن
معََة اًغاء الس خؼالم.
8
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت ,أو يف حال مت اس خدػاءُا بؼد أن
مت اغالق اكئن اًـ .Statement
حريم الس خثٌاء SQLFeatureNotSupportedExceptionيف حال اكن اًـ Driverل ًدمع ُذٍ ادلاةل.
)(public void close
جس خخدم لغالق الثطال مع كاػدة اًبَاانت ,فؼََ ًا ثغَق اكئن اًـ Statementو اكئن اًـ ResultSetاملرثبط بَ. 9
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)(public boolean isClosed
جس خخدم ملؼرفة اذا اكن اكئن اًـ Statementاذلي كام بس خدػاهئا مغَل ًا أم ل .حرحع trueاذا اكن مغَل ًا ,و حرحع falseاذا اكن 11
ل ٍزال مفذوح ًا .حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)public void setQueryTimeout(int seconds
حتدد ػدد اًثواين الكىص اذلي كد ًدٌظرٍ اًـ Driverاملس خخدم يف معََة الثطال ًخيفِذ أوامر من اكئن اًـ .Statement
غيد اس خدػاهئا منرر ًِا رمق أنرب أو ٌساوي ضفر ميثي ػدد اًثواين نـ .Argument 11
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت أو يف حال مقيا بغعاهئا كمية أضغر
من ضفر.
)(public int getQueryTimeout
حرحع ػدد اًثواين الكىص اذلي كد ًدٌظرٍ اًـ Driverاملس خخدم يف معََة الثطال ًخيفِذ أوامر من اكئن اًـ .Statement
12
حرحع 0يف حال مل ًمت حتدًد فرتة الهخظار .حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة
اًبَاانت أو مت اس خدػاءُا ػىل اكئن Statementمغَق.
)public void setMaxRows(int max
حتدد ػدد السعر الكىص اذلي ميىن أن حيخوًَ أي اكئن ًً ResultSetذج من اكئن اًـ .Statement
غيد اس خدػاهئا منرر ًِا رمق رمق أنرب أو ٌساوي 0نـ Argumentميثي ػدد السعر الكىص اذلي ميىن أن حيخوًَ اكئن
اًـ .ResultSetيف حال مقيا بمترٍر 0فِذا ًؼين أهَ ل حدود ًلسعر اًيت ميىن أن حيخوهيا اكئن اًـ .ResultSet 13
مالحظة :يف حال اكن ػدد السعر اذلي هخج غن الس خؼالم أنرب من ػدد السعر اًيت ميىن أن ٌس خوغهبا اكئن
اًـ ً ,ResultSetمت جتاُي السعر اًزائدة .حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة
اًبَاانت أو يف حال مقيا بغعاهئا كمية أضغر من ضفر.
)(public SQLWarning getWarnings
حرحع أول حتذٍر كام بظالكَ اكئن اًـ Statementاذلي كام بس خدػاهئا واكئن هوػَ .SQLWarningحرحع nullيف حال مل
14
ٍىن ُياك أي حتذٍر .حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت ,أو يف
حال مت اس خدػاءُا بؼد أن مت اغالق اكئن اًـ .Statement
)(public void clearWarnings
متسح مجَع اًخحذٍرات اًيت مت اضدارُا بسبب اكئن اًـ Statementاذلي كام بس خدػاهئا.
مالحظة :اذا مقت بس خدػاء ادلاةل )( getWarningsبؼد اس خدػاء ُذٍ ادلاةل ,سرتحع كل .null 15
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت ,أو يف حال مت اس خدػاءُا بؼد أن
مت اغالق اكئن اًـ .Statement
الهرتفُس ٍ PreparedStatementرث من الهرتفُس ,Statementو أدائَ أرسع مٌَ أًض ًا .مت ثطمميَ لرسال اس خؼالمات اىل
كاػدة اًبَاانت أزياء معي اًربانمج ,نام أهَ ميىن اس خخدامَ ًخيفِذ هفس أوامر اًـ SQLػدة مرات.
ٌَحطول ػىل اكئن PreparedStatementمن اكئن اًـ Connectionوس خدغي ادلاةل )(.prepareStatement
?
الهرتفُس PreparedStatementمطمم لرسال اس خؼالمات أزياء جشغَي اًربانمج ,فِجب:
-جتِزي شلك الس خؼالم السايس اذلي سُمت ارساهل.
-حؼي املس خخدم ٍمكي هص الس خؼالم.
-ثيفِذ الس خؼالم.
?
مبا أهيا هلوم بخجِزي الس خؼالم ػىل مرحَخني كبي ارساهل اىل كاػدة اًبَاانت و ثيفِذٍ ,جيب أن هضع ػالمة اس خفِام ماكن لك مؼَومة
ىرًد من املس خخدم ادخاًِا غيد جشغَي اًربانمج حىت ٍىمتي هص الس خؼالم.
غيد جتِزي هص الس خؼالم السايس ,هلوم بوضع ػالمة -أو ػالمات -الس خفِام فَِ اكًخايل.
= PreparedStatement pstmt = con.prepareStatement("UPDATE employee SET name
? = ? WHERE id ;)"
و وس خخدم داةل من دوال الدخال املطمة لمتام هص الس خؼالم أزياء جشغَي اًربانمج اكًخايل.
ماكن أول رمز ? سُمت وضع المسpstmt.setString(1, "Ahmad"); //Ahmad
;)pstmt.setInt(2, 12 //ماكن اثين رمز ? سُمت وضع اًرمق 12
مث وس خخدم داةل ثيفِذ الس خؼالم اكًخايل.
;)(pstmt.executeUpdate
""UPDATE employee SET name = 'ahmad' WHERE id = 12 وًطبح شلك الس خؼالم اذلي مت ثيفِذٍ اكًخايل:
ػالمات الس خفِام اًيت ثضؼِا يف هص الس خؼالمً ,مت حركميِا ابخداء ًا من اًرمق 1نام لحظت يف املثال اًسابق.
غيدما ىىذب اس خؼالم و هضع فَِ ػالمة اس خفِام أو أنرثً ,عَق ػىل ُذا الس خؼالم جسمَة .Parameterized Query
ادلوال اًيت وس خخدهما ٍمترٍر اًلمي اًيت حطَيا ػَهيا من املس خخدم ًوضؼِا ماكن ػالمات الس خفِام ,جسمى .Setter Methods
Methods
)void setInt(int parameterIndex, int value
منرر ًِا كميخني نـ ,Argumentsالوىل غبارة غن رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية ,و اًثاهَة
غبارة غن رمق هوػَ intحيدد اًلمية اًيت سُمت وضؼِا ماكن ػالمة اًسؤال املوضوػة يف هص الس خؼالم اذلي مت جتِزيٍ يف اكئن
1
اًـ PreparedStatementاذلي كام بس خدػاهئا.
اًـ JDBCس َلوم بخحوًي هوع اًلمية اًيت مت وضؼِا ماكن اًبارامِرت valueاىل اًيوع .INTEGER
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)void setLong(int parameterIndex, long value
منرر ًِا كميخني نـ ,Argumentsالوىل غبارة غن رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية ,و اًثاهَة
غبارة غن رمق هوػَ longحيدد اًلمية اًيت سُمت وضؼِا ماكن ػالمة اًسؤال املوضوػة يف هص الس خؼالم اذلي مت جتِزيٍ يف اكئن
2
اًـ PreparedStatementاذلي كام بس خدػاهئا.
اًـ JDBCس َلوم بخحوًي هوع اًلمية اًيت مت وضؼِا ماكن اًبارامِرت valueاىل اًيوع .BIGINT
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)void setFloat(int parameterIndex, float value
منرر ًِا كميخني نـ ,Argumentsالوىل غبارة غن رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية ,و اًثاهَة
غبارة غن رمق هوػَ floatحيدد اًلمية اًيت سُمت وضؼِا ماكن ػالمة اًسؤال املوضوػة يف هص الس خؼالم اذلي مت جتِزيٍ يف اكئن
3
اًـ PreparedStatementاذلي كام بس خدػاهئا.
اًـ JDBCس َلوم بخحوًي هوع اًلمية اًيت مت وضؼِا ماكن اًبارامِرت valueاىل اًيوع .REAL
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)void setDouble(int parameterIndex, double value
منرر ًِا كميخني نـ ,Argumentsالوىل غبارة غن رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية ,و اًثاهَة
غبارة غن رمق هوػَ doubleحيدد اًلمية اًيت سُمت وضؼِا ماكن ػالمة اًسؤال املوضوػة يف هص الس خؼالم اذلي مت جتِزيٍ يف
4
اكئن اًـ PreparedStatementاذلي كام بس خدػاهئا.
اًـ JDBCس َلوم بخحوًي هوع اًلمية اًيت مت وضؼِا ماكن اًبارامِرت valueاىل اًيوع .DOUBLE
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)void setBoolean(int parameterIndex, boolean value
منرر ًِا كميخني نـ ,Argumentsالوىل غبارة غن رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية ,و اًثاهَة
غبارة غن كمية هوغِا booleanحتدد اًلمية اًيت سُمت وضؼِا ماكن ػالمة اًسؤال املوضوػة يف هص الس خؼالم اذلي مت جتِزيٍ يف
اكئن اًـ PreparedStatementاذلي كام بس خدػاهئا. 5
اًـ JDBCس َلوم بخحوًي هوع اًلمية اًيت مت وضؼِا ماكن اًبارامِرت valueاىل اًيوع BITأو .BOOLEAN
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)void setByte(int parameterIndex, byte value
منرر ًِا كميخني نـ ,Argumentsالوىل غبارة غن رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية ,و اًثاهَة
غبارة غن رمق هوػَ byteحيدد اًلمية اًيت سُمت وضؼِا ماكن ػالمة اًسؤال املوضوػة يف هص الس خؼالم اذلي مت جتِزيٍ يف اكئن
6
اًـ PreparedStatementاذلي كام بس خدػاهئا.
اًـ JDBCس َلوم بخحوًي هوع اًلمية اًيت مت وضؼِا ماكن اًبارامِرت valueاىل اًيوع .TINYINT
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)void setShort(int parameterIndex, short value
منرر ًِا كميخني نـ ,Argumentsالوىل غبارة غن رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية ,و اًثاهَة
غبارة غن رمق هوػَ shortحيدد اًلمية اًيت سُمت وضؼِا ماكن ػالمة اًسؤال املوضوػة يف هص الس خؼالم اذلي مت جتِزيٍ يف اكئن
7
اًـ PreparedStatementاذلي كام بس خدػاهئا.
اًـ JDBCس َلوم بخحوًي هوع اًلمية اًيت مت وضؼِا ماكن اًبارامِرت valueاىل اًيوع .SMALLINT
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)void setString(int parameterIndex, String value
منرر ًِا كميخني نـ ,Argumentsالوىل غبارة غن رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية ,و اًثاهَة
غبارة غن هص حيدد اًلمية اًيت سُمت وضؼِا ماكن ػالمة اًسؤال يف هص الس خؼالم اذلي مت جتِزيٍ يف اكئن
اًـ PreparedStatementاذلي كام بس خدػاهئا. 8
اًـ JDBCس َلوم بخحوًي هوع اًلمية اًيت مت وضؼِا ماكن اًبارامِرت valueاىل
اًيوع VARCHARأو .LONGVARCHAR
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)void setDate(int parameterIndex, Date date
منرر ًِا كميخني نـ ,Argumentsالوىل غبارة غن رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية ,و اًثاهَة
غبارة غن اكئن من اًالكس Dateحيدد اًلمية اًيت سُمت وضؼِا ماكن ػالمة اًسؤال يف هص الس خؼالم اذلي مت جتِزيٍ يف اكئن
9
اًـ PreparedStatementاذلي كام بس خدػاهئا.
اًـ JDBCس َلوم بخحوًي هوع اًلمية اًيت مت وضؼِا ماكن اًبارامِرت dateاىل اًيوع .DATE
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)void setCharacterStream(int parameterIndex, Reader reader, int length
جس خخدم ًخخزٍن مَف هيص يف كاػدة اًبَاانت غيد اس خدػاهئا منرر ًِا زالزة كمي نـ Argumentsاكًخايل:
ماكن اًبارامِرت ,parameterIndexمنرر رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية.
ماكن اًبارامِرت ,readerمنرر اكئن من اًالكس Readerحيدد امس و رابط املَف اذلي سُمت وضؼَ ماكن ػالمة اًسؤال يف
11
هص الس خؼالم اذلي مت جتِزيٍ يف اكئن اًـ .PreparedStatement
ماكن اًبارامِرت ,lengthمنرر رمق هوػَ intميثي ػدد الحرف اًيت حيخوهيا ُذا املَف.
اًـ JDBCس هيمت بيوع اًرتمزي املس خخدم يف ُذا املَف بشلك ثَلايئ.
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)void setBinaryStream(int parameterIndex, InputStream is, int length
جس خخدم ًخخزٍن أي هوع من املَفات اًغري هطَة يف كاػدة اًبَاانت .غيد اس خدػاهئا منرر ًِا زالزة كمي نـ Argumentsاكًخايل:
11
ماكن اًبارامِرت ,parameterIndexمنرر رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية.
ماكن اًبارامِرت ,isمنرر اكئن من اًالكس InputStreamحيدد امس و رابط اًطورة اًيت سُمت وضؼِا ماكن ػالمة اًسؤال يف
هص الس خؼالم اذلي مت جتِزيٍ يف اكئن اًـ .PreparedStatement
ماكن اًبارامِرت ,lengthمنرر رمق هوػَ intميثي جحم املَف بًـ .Byte
اًـ JDBCس هيمت بيوع اًرتمزي املس خخدم يف ُذا املَف بشلك ثَلايئ.
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
)void setBlob(int parameterIndex, InputStream is, int length
جس خخدم ًخخزٍن ضورة يف كاػدة اًبَاانت .غيد اس خدػاهئا منرر ًِا زالزة كمي نـ Argumentsاكًخايل:
ماكن اًبارامِرت ,parameterIndexمنرر رمق هوػَ intحيدد indexػالمة اًسؤال اًيت سُمت ثبدًَِا بلمية.
ماكن اًبارامِرت ,isمنرر اكئن من اًالكس InputStreamحيدد امس و رابط املَف اذلي سُمت وضؼَ ماكن ػالمة اًسؤال يف
12هص الس خؼالم اذلي مت جتِزيٍ يف اكئن اًـ .PreparedStatement
ماكن اًبارامِرت ,lengthمنرر رمق هوػَ intميثي جحم املَف بًـ .Byte
اًـ JDBCس َلوم بخحوًي هوع اًلمية اًيت مت وضؼِا ماكن اًبارامِرت blobاىل اًيوع .BLOB
حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت.
حريم الس خثٌاء SQLFeatureNotSupportedExceptionيف حال اكن اًـ JDBCل ًدمع ُذٍ ادلاةل.
)(public ResultSet executeQuery
ثيفذ الس خؼالم اذلي مت جتِزيٍ يف اكئن اًـ PreparedStatementاذلي كام بس خدػاهئا .حرحع هدِجة الس خؼالم واكئن
هوػَ .ResultSetالمر اذلي ميرر ًِا يف اًؼادة ٍىون أمر SELECTاثبت.
13حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت ,أو يف حال مل ٍرحع الس خؼالم
اكئن .ResultSet
حريم الس خثٌاء SQLTimeoutExceptionيف حال بلي اكئن اًـ Statementيف وضؼَة الهخظار حىت ختعى املدة اًيت مت
حتدًدُا بواسعة ادلاةل )(.setQueryTimeout
)(public int executeUpdate
ثيفذ الس خؼالم اذلي مت جتِزيٍ يف اكئن اًـ PreparedStatementاذلي كام بس خدػاهئا.
حرحع ػدد السعر اًيت مت اضافهتا أو اًخؼدًي ػَهيا .و حرحع 0يف حال اكن الس خؼالم ل ٍرحع يشء.
14حريم الس خثٌاء SQLExceptionيف حال حدث خعأ غيد حماوةل الثطال بلاػدة اًبَاانت ,أو يف حال أرحع الس خؼالم
اكئن .ResultSet
حريم الس خثٌاء SQLTimeoutExceptionيف حال بلي اكئن اًـ Statementيف وضؼَة الهخظار حىت ختعى املدة اًيت مت
حتدًدُا بواسعة ادلاةل )(setQueryTimeout