কি হুকুম করবে
Class.forName("oracle.jdbc.driver.OracleDriver")
ওরাকল ডাটাবেসের সাথে সংযোগ করার সময় ঠিক কী করবেন? একই জিনিস করার বিকল্প উপায় আছে?
কি হুকুম করবে
Class.forName("oracle.jdbc.driver.OracleDriver")
ওরাকল ডাটাবেসের সাথে সংযোগ করার সময় ঠিক কী করবেন? একই জিনিস করার বিকল্প উপায় আছে?
A
আমি যেখানে আলাদা ক্লাসে কল করেছি তার সাথে আমার সংযোগের বিশদ রয়েছে এবং আমি যেখানে প্রতিটি সংযোগের প্রয়োজন সেখানে জাভা এড়িয়ে যাবে বা আবার লোড হবে এমন প্রতিটি সার্লেটের জন্য সংযোগের ক্ষেত্র পেতে আমি অবজেক্ট তৈরি করি ? Class.forName("oracle.jdbc.driver.OracleDriver")
A
A's
Class.forName("oracle.jdbc.driver.OracleDriver")
উত্তর:
এটি FQCN (সম্পূর্ণরূপে যোগ্য শ্রেণীর নাম) সহ শ্রেণি অবজেক্টের একটি রেফারেন্স অর্জন করে oracle.jdbc.driver.OracleDriver
।
নির্দিষ্ট ক্লাসটি বর্তমান বর্গ লোডার দ্বারা লোড করা হয়েছে কিনা তা নিশ্চিত করে বাদ দিয়ে এটি একটি ডাটাবেসে সংযোগের ক্ষেত্রে কিছু করতে "কিছুই করে না" । লেখার মধ্যে কোন মৌলিক পার্থক্য নেই
Class<?> driverClass = Class.forName("oracle.jdbc.driver.OracleDriver");
// and
Class<?> stringClass = Class.forName("java.lang.String");
Class.forName("com.example.some.jdbc.driver")
কলগুলি লিগ্যাসি কোডে প্রদর্শিত হবে যা জেডিবিসি ব্যবহার করে কারণ এটি কোনও জেডিবিসি ড্রাইভার লোড করার উত্তরাধিকার উপায় ।
থেকে জাভা টিউটোরিয়াল :
জেডিবিসি-র পূর্ববর্তী সংস্করণগুলিতে সংযোগ পেতে, আপনাকে প্রথমে পদ্ধতিটি কল করে আপনার জেডিবিসি ড্রাইভারটি শুরু করতে হয়েছিল
Class.forName
। এই পদ্ধতিগুলির জন্য ধরণের একটি বিষয় প্রয়োজনjava.sql.Driver
। প্রতিটি জেডিবিসি ড্রাইভারের মধ্যে এক বা একাধিক ক্লাস থাকে যা ইন্টারফেস প্রয়োগ করেjava.sql.Driver
।
...
আপনার শ্রেণীর পথে পাওয়া যে কোনও জেডিবিসি 4.0 ড্রাইভার স্বয়ংক্রিয়ভাবে লোড হয়ে যায়। (তবে, আপনাকে অবশ্যই পদ্ধতি সহ জেডিবিসি ৪.০ এর পূর্বে যেকোন ড্রাইভারই লোড করতে হবেClass.forName
))
Class.forName()
রেফারেন্স না ধরে কল করতেন , তাই এটি প্রথম নজরে কোনও অপ-অপারেশনের মতো মনে হয়
Class.forName("etc.driver")
?
Class.forName(...)
।
এটি ড্রাইভার নিবন্ধন করে; ফর্মের কিছু:
public class SomeDriver implements Driver {
static {
try {
DriverManager.registerDriver(new SomeDriver());
} catch (SQLException e) {
// TODO Auto-generated catch block
}
}
//etc: implemented methods
}
থেকে জাভা JDBC এর টিউটোরিয়াল :
জেডিবিসি-র পূর্ববর্তী সংস্করণগুলিতে সংযোগ পেতে, আপনাকে প্রথমে পদ্ধতিটি কল করে আপনার জেডিবিসি ড্রাইভারটি শুরু করতে হয়েছিল
Class.forName
। আপনার শ্রেণীর পথে পাওয়া যে কোনও জেডিবিসি 4.0 ড্রাইভার স্বয়ংক্রিয়ভাবে লোড হয়ে যায়। (তবে, আপনাকে অবশ্যই পদ্ধতি সহ জেডিবিসি ৪.০ এর পূর্বে যেকোন ড্রাইভারই লোড করতে হবেClass.forName
))
সুতরাং, আপনি যদি জাভা ১. with সহ ওরেकल ১১ জি (১১.১) ড্রাইভারটি ব্যবহার করেন তবে আপনাকে কল করার দরকার নেই Class.forName
। অন্যথায়, ড্রাইভারটি আরম্ভ করার জন্য আপনাকে এটি কল করতে হবে।
Class.forName
কল বাহিনী classloader দেওয়া বর্গ লোড করা হয়নি। টিউটোরিয়ালে বর্ণিত এটি ম্যানুয়াল লোডিং পদক্ষেপ।
class.forName();
:)
জাভা 6 প্রাক DriverManager
ক্লাসে আপনি কোন জেডিবিসি ড্রাইভারটি ব্যবহার করতে চেয়েছিলেন তা জানতেন না। Class.forName("...")
ড্রাইভার ক্লাস প্রাক লোড করার একটি উপায় ছিল।
আপনি যদি জাভা 6 ব্যবহার করেন তবে আপনার আর এটি করার দরকার নেই।
এই কমান্ডটি ড্রাইভার ম্যানেজার উদাহরণের জন্য উপলব্ধ ওরাকল jdbc ড্রাইভারের ক্লাস লোড করে। ক্লাসটি লোড হওয়ার পরে সিস্টেম এটি ব্যবহার করে ওরাকলের সাথে সংযুক্ত হতে পারে। বিকল্প হিসাবে আপনি ড্রাইভারম্যানেজারের রেজিস্ট্রড্রাইভার পদ্ধতিটি ব্যবহার করতে পারেন এবং আপনার প্রয়োজন জেডিবিসি ড্রাইভারের উদাহরণ সহ এটি পাস করতে পারেন।
আপনি জেভিএম শুরু করার সময় কমান্ড লাইনে আপনার প্রয়োজনীয় ড্রাইভার (গুলি) নির্দিষ্ট করতে jdbc.drivers সিস্টেম বৈশিষ্ট্যটি ব্যবহার করার বিকল্প রয়েছে ।
Oracle.jdbc.OracleDriver ব্যবহার করুন, oracle.jdbc.driver.OracleDriver নয়। আপনি যদি টমক্যাট ব্যবহার করছেন তবে ড্রাইভার জার ফাইলটি "WEB-INF \ lib" ডিরেক্টরিতে থাকলে এটি নিবন্ধ করার দরকার নেই do এটিকে টেস্ট.জেএসপি হিসাবে সংরক্ষণ করুন এবং এটি আপনার ওয়েব ডিরেক্টরিতে রেখে দিন এবং টমক্যাট পরিচালকের মধ্যে আপনার ওয়েব অ্যাপ্লিকেশন ফোল্ডারটি পুনরায় চালু করুন:
<%@ page import="java.sql.*" %>
<HTML>
<HEAD>
<TITLE>Simple JSP Oracle Test</TITLE>
</HEAD><BODY>
<%
Connection conn = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@XXX.XXX.XXX.XXX:XXXX:dbName", "user", "password");
Statement stmt = conn.createStatement();
out.println("Connection established!");
}
catch (Exception ex)
{
out.println("Exception: " + ex.getMessage() + "");
}
finally
{
if (conn != null) {
try {
conn.close();
}
catch (Exception ignored) {
// ignore
}
}
}
%>