জাভাতে ডাটাবেজ প্রোগ্রামিং
জাভাতে ডাটাবেজ প্রোগ্রামিং
জাভাতে ডাটাবেজ প্রোগ্রামিংজাভা দিয়ে ডাটাবেজ প্রোগ্রামিংয়ের জন্য গত পর্বে আমরা ৪টি ধাপের কথা উল্লেখ করেছিলাম। যার মধ্যে গত পর্বে প্রথম দুটি ধাপ যেমন ডাটাবেজ তৈরি এবং ডাটা সোর্স নেম (DSN) তৈরির পদ্ধতি দেখানো হয়েছে। আজকের পর্বে পরের দুটি ধাপ যেমন জাভা প্রোগ্রাম তৈরি এবং ডাটাবেজ থেকে ডাটা প্রদর্শন করার পদ্ধতি নিয়ে আলোচনা করা হবে। তবে প্রোগ্রামটি কাজ করার জন্য চারটি ধাপই সম্পন্ন করতে হবে। জাভা প্রোগ্রাম তৈরির আগে আমাদের কয়েকটি টার্ম সম্পর্কে ধারণা থাকতে হবে। DriverManager ড্রাইভার ম্যানেজারের বেসিক কাজ হলো Jdbc-এর ড্রাইভারগুলোকে ম্যানেজ করা। এটি ড্রাইভার ক্লাসগুলোকে মেমরিতে লোড করে। ব্যবহারকারীর চাহিদামতো পরবর্তীতে তাদেরকে কাস্টমাইজ করা যায়। যেমন my sql ড্রাইভার লোড করার জন্য কোড Class.forName("my.sql.Driver"); যখন ড্রাইভার ম্যানেজার get Connection মেথডকে কল করে তখন প্রয়োজনীয় ড্রাইভারকে সে লোড করে। JdbcOdbcDriver Jdbc= Java Database Connectivity Odbc= Open Database Connectivity জাভা দিয়ে ডাটাবেজের সাথে কানেকশনের জন্য জাভার ডাটাবেজ ড্রাইভার Jdbc এবং মাইক্রোসফটের ড্রাইভার Odbc প্রয়োজন। Statement ডাটাবেজ থেকে ডাটা নেয়া/পড়ার জন্য Structured Query Language বা Sql ল্যাঙ্গুয়েজ প্রয়োজন। ঝঃধঃবসবহঃ-এর মাধ্যমে Sql ল্যাঙ্গুয়েজকে রান করানো যায় এবং এর মাধ্যমে ডাটাবেজ থেকে ডাটা সংগ্রহ করা যায়। ResultSet এটি Statement-এর মাধ্যমে সংগৃহীত ডাটাকে টেবিল আকারে সংরক্ষণ করে। রেজাল্টসেট কারেন্ট রো-এর ডাটাকে নিয়ে কাজ করার জন্য একটি কার্সর পয়েন্ট মেইনটেইন করে। প্রাথমিকভাবে কার্সরের অবস্থান হয় প্রথম রো-এর প্রথম ডাটাতে। রেজাল্টসেট Next মেথডের মাধ্যমে পরবর্তী রো-তে চলে যায়। যদি রেজাল্টসেট শেষ রো-তে অবস্থান করে তখন Next ব্যবহার করলে false রিটার্ন করে। এমতাবস্থায় আবার প্রথম থেকে ডাটা নিয়ে কাজ করার জন্য While মেথড ব্যবহার করা যায়। ডিফল্ট রেজাল্টসেট আপডেট করা যায় না এবং শুধুমাত্র সামনে অগ্রসর হতে পারে। JDBC 2.0 API-তে এই সীমাবদ্ধতা কাটানো হয়েছে। ফলে এখন রেজাল্টসেটে সংরক্ষিত ডাটাকে আপডেটের পাশাপাশি স্ক্রল করা যায়। জাভা প্রোগ্রাম তৈরি নিচের জাভা প্রোগ্রামটি নোটপ্যাডে টাইপ করে Students_Result_Info.java নামে D:\ ড্রাইভের java ফোল্ডারে সেভ করতে হবে। import java.sql.*; public class Students_Result_Info { public static void main (String args[]) { Statement s; ResultSet r; try { Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");//1 Connection c =DriverManager.getConnection ("jdbc:odbc:abc","",""); //2 s = c.createStatement(); //3 r = s.executeQuery("select * from results");//4 System.out.print("Roll"+ " "); System.out.print("English"+ " "); System.out.println("Math"); while(r.next()) { System.out.print(r.getString("roll") + " "); System.out.print(r.getString("English")+ " "); System.out.println(r.getString("Math")); } s.close(); //5 c.close(); //6 } catch(Exception e) { System.out.println("Error"+e); } } } কোড বিশ্লেষণ আমরা আগেই বলেছিলাম যে, জাভাতে ডাটাবেজ সংক্রান্ত কাজ করার জন্য জাভার sql প্যাকেজ ইম্পোর্ট করতে হবে। প্রথম লাইনের কোড import java.sql.*;-এর মাধ্যমে আমরা প্যাকেজটিকে ইম্পোর্ট করেছি। Students_Result_Info ক্লাসের মেইন মেথডে আমরা পর্যায়ক্রমে JdbcOdbcDriver ড্রাইভারকে নিয়ে একটি ডাটা সোর্সের মাধ্যমে ডাটাবেজের সাথে কানেকশন তৈরি করব। এজন্য ১নং চিহ্নিত লাইনে প্রথমেই ড্রাইভারকে কল করা হচ্ছে। তারপর ২নং চিহ্নিত লাইনে ডাটাসোর্সের মাধ্যমে ডাটাবেজের সাথে কানেকশন তৈরির জন্য কোড লেখা হয়েছে। এখানে ধনপ হলো ডাটা সোর্স নেম। ডাটা সোর্স নেম কীভাবে তৈরি করা হয় তা গত পর্বে দেখানো হয়েছে। মূলত ডাটা সোর্স নেমের মাধ্যমে ডাটাবেজের সাথে কানেকশন তৈরি করা হয়। ডাটা সোর্স নেম (abc) বলে দেয়া ডাটাবেজের টেবিল বা কোয়েরির সাথে কানেকশন তৈরি করবে। ফলে আমরা যখন ড্রাইভারের সাহায্যে উক্ত ডাটা সোর্সকে কল করব তখন ওই ডাটা সোর্সটি তাকে বলে দেয়া পথ অনুসরণ করে টেবিল বা কোয়েরির সাথে কানেকশন তৈরি করবে যাতে করে আমরা পরবর্তীতে ডাটা পেতে পারি। ৩নং লাইনে আমরা একটি স্টেটমেন্ট (Statement) তৈরি করেছি। আগেই বলা হয়েছে যে, এর মাধ্যমে আমরা টেবিল থেকে আমাদের পছন্দমতো ডাটা সংগ্রহের জন্য যেকোনো ধরনের কোয়েরি চালাতে পারি। স্টেটমেন্ট ছাড়া কোয়েরি চালানো সম্ভব নয় এবং টেবিল থেকে ডাটা নেয়াও সম্ভব নয়। স্টেটমেন্টের মাধ্যমে চালানো কোয়েরির মাধ্যমে সংগৃহীত ডাটা টেবিল আকারে মেমরিতে স্টোর করার জন্য ResultSet প্রয়োজন। ৪নং লাইনের মাধ্যমে আমরা কোয়েরির মাধ্যমে প্রাপ্ত ডাটাকে রেজাল্টসেটে রেখেছি। আমরা Students ডাটাবেজে results নামে টেবিলের সব ডাটাকে মেমরিতে নেয়ার জন্য একটি কোয়েরি (select * from results) লিখেছি। ফলে উক্ত টেবিলের সব ডাটা রেজাল্টসেট তথা মেমরিতে অবস্থান করবে। সেখান থেকে আমাদের প্রয়োজনমাফিক ডাটাগুলোকে আমরা প্রদর্শন করব। Students ডাটাবেজে results টেবিলের ইনপুন দেয়া ডাটাগুলো ছিল সংশোধনী : গত পর্বে দেয়া টেবিলের নাম Students Result-এর পরিবর্তে results হিসেবে সংশোধন করে নিন। এজন্য তৈরিকৃত টেবিলের ওপর রাইট বাটন ক্লিক করে রিনেম করতে হবে। আমরা রোল নং অনুযায়ী ইংরেজি ও গণিতে কে কত নম্বর পেয়েছে সেটা দেখানোর জন্য প্রথমে System.out.print(r.getString("roll") + " ");-এর মাধ্যমে রেজাল্টসেট হতে রোল নং এবং পরবর্তী দুটি লাইনের মাধ্যমে ইংরেজি এবং গণিতের মান দেখাব। একটি রো-এর সব ডাটা দেখানোর পর পরবর্তী রো-তে যাওয়ার জন্য next() মেথড ব্যবহার করা হয়েছে। এই মেথডের মাধ্যমে একেবারে শেষ রো পর্যন্ত সব ডাটা প্রদর্শন করার জন্য while মেথড ব্যবহার করা হয়েছে। শেষ রো-তে আসলে প্রোগ্রামটি false রিটার্ন করবে এবং লুপ থেকে বের হয়ে প্রদর্শনের কাজ সম্পন্ন করবে। কোয়েরি এবং কানেকশন বন্ধ করার জন্য ৫ ও ৬ নং লাইনে কোড লেখা হয়েছে। ফলে প্রোগ্রামটি দ্বারা মেমরি ব্যবহার করা বন্ধ হয়ে যাবে। ডাটা প্রদর্শনের পুরো প্রোগ্রামটিকে try মেথডের মধ্যে লেখা হয়েছে। প্রোগ্রামটি চলার সময় যদি কোনো সমস্যা তৈরি হয়, যেমন ডাটাবেজের সাথে কানেকশন তৈরি করতে না পারা বা নির্দিষ্ট ডাটা সোর্স না থাকা ইত্যাদি ক্ষেত্রে প্রোগ্রামটি চলা যাতে বন্ধ না হয় সেক্ষেত্রে কোনো Exception তৈরি হলে catch-এর মাধ্যমে ওই নির্দিষ্ট সমস্যাটি মেসেজ আকারে প্রদর্শন করবে। প্রোগ্রাম রান করা প্রোগ্রামটি রান করার পদ্ধতি অন্যান্য জাভা প্রোগ্রামের মতোই। এজন্য অবশ্যই আপনার কমপিউটারে Jdk সফটওয়্যার ইনস্টল থাকতে হবে। আমরা সফটওয়্যারটির Jdk1.4 ভার্সন ব্যবহার করেছি। প্রোগ্রামটি রান করার জন্য বরাবরের মতো কমান্ড প্রম্পট ওপেন করে নিচের চিত্রের মতো কোড লিখে প্রথমত জাভা ফাইলটিকে কম্পাইল করতে হবে। ফলে একটি ক্লাস ফাইল তৈরি হবে যাকে সর্বশেষ লাইনের মাধ্যমে আমরা রান করব। আজকের প্রোগ্রামে আমরা ডাটাবেজ থেকে ডাটা প্রদর্শন করার জন্য কোড লিখেছি। তবে এসকিউএল ল্যাঙ্গুয়েজ ব্যবহার করে টেবিলে ডাটা সংযোজন এবং টেবিল থেকে ডাটা মুছে ফেলাও সম্ভব। পরবর্তীতে এ-সংক্রান্ত প্রোগ্রাম দেখানো হবে।
আরও পড়ুন
মতামত দিন আপনার ইমেল প্রকাশিত হবে না।
আপনি লগ ইন অবস্থায় নেই।
আপনার মতামতটি দেওয়ার জন্য লগ ইন করুন।
যদি রেজিষ্ট্রেশন করা না থাকে প্রথমে রেজিষ্ট্রেশন করুন।
রিভিউ ( ০ / ৫ )
আপনি লগ ইন অবস্থায় নেই।
আপনার রিভিউ দেওয়ার জন্য লগ ইন করুন।
যদি রেজিষ্ট্রেশন করা না থাকে প্রথমে রেজিষ্ট্রেশন করুন।
০ টি মন্তব্য