MySQL Database Insertion in C# সি শার্প প্রজেক্টে মাইএসকিউএল ডাটাবেইজের ইনসার্ট অপারেশন
সি শার্প প্রজেক্টে মাইএসকিউএল ডাটাবেইজের ইনসার্ট অপারেশন
সি শার্প টিউটোরিয়ালের আজকের পর্বে আপনাদের সবাইকে স্বাগতম জানাচ্ছি। আজকের পোষ্টে আমরা সি শার্প প্রজেক্টের ডাটা মাইএসকিউএল (MySQL) ডাটাবেইজে ইনসার্ট করার একটা পদ্ধতি দেখব। আমরা সর্বশেষ পোষ্টে সি শার্প প্রজেক্টে মাইএসকিউএল ডাটাবেইজ ব্যবহার করার একটা পদ্ধতি দেখেছিলাম। আজকের পোষ্টে ডাটা ইনসার্ট করার জন্য আমরা একই পদ্ধতি ব্যবহার করব।
আমরা ডাটা ইনসার্ট করার জন্য যে পদ্ধতিটি ব্যবহার করব আমার জানা মতে সেটা একেবারে সহজ পদ্ধতি। আপনারা নিজের পছন্দ মত যেকোন একটা প্রজেক্টের জিইউআই/গুই (GUI) ডিজাইন করতে পারেন অথবা নিচের প্রজেক্টের মত একটা স্যাম্পল তৈরি করতে পারেন।
উপরের ছবিতে আমরা উদাহরনস্বরুপ একটা সি শার্প প্রজেক্ট নিয়ে কাজ করছি যেটা শুধুমাত্র ইউজারের নাম ডাটাবেইজে স্টোর/সেইভ করে রাখে। মনেকরুন আমাদের ডাটাবেইজের নাম “user” এবং আমরা “info” নামের টেবল/টেবিল এ ডাটা ইনসার্ট করব।
আমরা ডাটা ইনসার্ট করার জন্য যে পদ্ধতিটি ব্যবহার করব আমার জানা মতে সেটা একেবারে সহজ পদ্ধতি। আপনারা নিজের পছন্দ মত যেকোন একটা প্রজেক্টের জিইউআই/গুই (GUI) ডিজাইন করতে পারেন অথবা নিচের প্রজেক্টের মত একটা স্যাম্পল তৈরি করতে পারেন।
উপরের ছবিতে আমরা উদাহরনস্বরুপ একটা সি শার্প প্রজেক্ট নিয়ে কাজ করছি যেটা শুধুমাত্র ইউজারের নাম ডাটাবেইজে স্টোর/সেইভ করে রাখে। মনেকরুন আমাদের ডাটাবেইজের নাম “user” এবং আমরা “info” নামের টেবল/টেবিল এ ডাটা ইনসার্ট করব।
সি শার্প প্রজেক্টে মাইএসকিউএল ডাটাবেইজ ব্যবহার করার জন্য আমাদেরকে নিচের লাইব্রেরী/নেইমস্পেইসটা লিখতে হবেঃ
using MySql.Data.MySqlClient;
ডাটাবেইজে ডাটা ইনসার্ট করার জন্য আমাদেরকে নিচের কয়েকটা পদ্ধতি অনুসরন করতে হবে।
১। ডাটাবেইজের কানেকশন দেওয়ার জন্য প্রথমে আমাদেরকে MySqlConnection ক্লাসের একটা ইন্সট্যান্স ডিক্লায়ার করতে হবে। এজন্য আমরা নিচের সিনট্যাক্সটা অনুসরন করতে পারিঃ
১। ডাটাবেইজের কানেকশন দেওয়ার জন্য প্রথমে আমাদেরকে MySqlConnection ক্লাসের একটা ইন্সট্যান্স ডিক্লায়ার করতে হবে। এজন্য আমরা নিচের সিনট্যাক্সটা অনুসরন করতে পারিঃ
MySqlConnection instance_name = new MySqlConnection(string connection_string);
instance_name এর জন্য আমরা যেকোন নাম ব্যবহার করতে পারি [এগুলো ভ্যালিড নাম, যেমনঃ conn, _conn, conn_, conn1, etc. এগুলো ইনভ্যালিড নামঃ 1conn, @conn, etc]। MySqlConnection ক্লাসের ইন্সট্যান্স ডিক্লায়ার করার সময় প্যারামিটারে আমাদেরকে যে ডাটাবেইজটা ব্যবহার করব তার কানেকশন স্ট্রিং ডিক্লায়ার করতে হবে। মাইএসকিউএল ডাটাবেইজের জন্য আমরা নিচের কানেকশন স্ট্রিংটা ব্যবহার করতে পারিঃ
“server = server_link; port = port_number; database = database_name; username= username; password=password”
উপরের কানেকশন স্ট্রিংটা ছাড়া আমরা চাইলে নিচের কানেকশন স্ট্রিংটাও ব্যবহার করতে পারিঃ
“datasource = datasource_link; port = port_number; database = database_name; username= username; password=password”
যদি কোন কারনে আপনার নেটওয়ার্কের পোর্ট নাম্বার জানা না থাকে তাহলে আপনি চাইলে কানেকশন স্ট্রিং থেকে পোর্ট নাম্বারটা বাদ দিতে পারেন। সেক্ষেত্রে আমাদের কানেকশন স্ট্রিংটা এইভাবে লিখতে হবেঃ
“server = server_link; database = database_name; username= username; password=password”
আমরা চাইলে কানেকশন স্ট্রিং থেকে আমাদের ডাটাবেইজের নামটা বাদ দিতে পারি। এতে যে সমস্যাটা হয় তা হয় হলঃ ডাটাবেইজের কুয়েরীতে আমাদেরকে প্রতিবার টেবলের নামের আগে ডাটাবেইজের নামটা উল্লেখ করে দিতে হয়। যেমনঃ
select * from user.info;
উপরের কুয়েরীর user.info তে user হল ডাটাবেইজ আর info হল টেবল।
যদি আপনি WAMP/XAMPP অথবা অন্যকোন লোকাল সার্ভার (localhost) ব্যবহার করেন এবং localhost এর কোন তথ্য পরিবর্তন না করেন তাহলে আপনার কানেকশন স্ট্রিংটা অনেকটা নিচের কানেকশন স্ট্রিংটার মত হবেঃ
server/ datasource = localhost
port = 3306;
database_name = depends on you.
username = root;
password =
তাহলে সি শার্পের প্রজেক্টের জন্য আমাদের কানেকশন স্ট্রিংটা হবে অনেকটা নিচের মতঃ
যদি আপনি WAMP/XAMPP অথবা অন্যকোন লোকাল সার্ভার (localhost) ব্যবহার করেন এবং localhost এর কোন তথ্য পরিবর্তন না করেন তাহলে আপনার কানেকশন স্ট্রিংটা অনেকটা নিচের কানেকশন স্ট্রিংটার মত হবেঃ
server/ datasource = localhost
port = 3306;
database_name = depends on you.
username = root;
password =
তাহলে সি শার্পের প্রজেক্টের জন্য আমাদের কানেকশন স্ট্রিংটা হবে অনেকটা নিচের মতঃ
MySqlConnection instance_name = new MySqlConnection("server = localhost;database = database_name; username=root; password=;"; );
আপনারা চাইলে কানেকশন স্ট্রিংটা একটা স্ট্রিং ভ্যারিয়েবলে রাখতে পারেন। যেক্ষেত্রে আমাদের কানেকশন স্ট্রিংটা অনেকটা নিচের মত হবেঃ
string connstr = "server = localhost;database = user; username=root; password=;"; MySqlConnection instance_name = new MySqlConnection(connstr);
২। এরপর ডাটা ইনসার্ট/ডিলিট/আপডেট/সিলেক্ট করার জন্য আমাদেরকে MySqlDataAdapter ক্লাসের একটা ইন্সট্যান্স ডিক্লায়ার করতে হবে। এজন্য আমরা নিচের সিনট্যাক্সটা অনুসরন করতে পারিঃ
MySqlDataAdapter instance_name = new MySqlDataAdapter();
৩। এরপর MySqlDataAdapter এর ইন্সট্যান্সটা দিয়ে আমাদেরকে মাইএসকিউএল এর InsertCommand টা সেট করতে হবে। এটা একটা MySqlCommand। এজন্য আমরা নিচের সিনট্যাক্সটা অনুসরন করতে পারিঃ
Instance_of_MySqlDataAdapter.InsertCommand = new MySqlCommand(string query, instance_of_ MySqlConnection);
এ কমেন্ডটা দুইটা প্যারামিটার ইনপুট নে। যার প্রথমটা হল কুয়েরী এবং দ্বিতীয়টা হল MySqlConnection এর ইনট্যান্স।
আমরা চাইলে কুয়েরীটা একটা স্ট্রিং ভ্যারিয়েবলে ডিক্লায়ার করতে পারি। যদি আমাদের MySqlConnection এর ইন্সট্যান্সটা conn এবং MySqlDataAdapter এর adapter ইন্সট্যান্সটা হয় সেক্ষেত্রে আমরা নিচের সিনট্যাক্স অনুসরন করতে পারিঃ
আমরা চাইলে কুয়েরীটা একটা স্ট্রিং ভ্যারিয়েবলে ডিক্লায়ার করতে পারি। যদি আমাদের MySqlConnection এর ইন্সট্যান্সটা conn এবং MySqlDataAdapter এর adapter ইন্সট্যান্সটা হয় সেক্ষেত্রে আমরা নিচের সিনট্যাক্স অনুসরন করতে পারিঃ
string query = “insert into table_name values ……“; adapter.InsertCommand = new MySqlCommand(query, conn);
৪। এরপর আমরা বাকী কাজগুলো try-catch ব্লকের মধ্যে করব।
try ব্লকে আমরা ডাটা ইনসার্টের সবগুলো কাজ করব এবং catch ব্লকে শুধুমাত্র ডাটাবেইজ কানেকশনের কোন এরর থাকলে শুধুমাত্র সেটা ম্যাসেজ হিসেবে প্রিন্ট করব।
try ব্লকের শুরুতে আমাদেরকে ডাটাবেইজ কানেকশনটা অন করতে হবে। এজন্য আমাদেরকে MySqlConnection এর ইন্সট্যান্সটা দিয়ে আমরা MySqlConnection ক্লাসের Open() ফাংশনটা কল দিতে হবে।
এরপর আমাদেরকে কুয়েরীটা এক্সিকিউট করতে হবে। এজন্য আমাদেরকে MySqlDataAdapter এর ইন্সট্যান্সটা দিয়ে ExecuteNonQuery() ফাংশনটা কল করতে হবে।
নোটঃ ExecuteNonQuery() ফাংশনটা দিয়ে ইনসার্ট, ডিলিট, আপডেট এর কুয়েরীগুলো এক্সিকিউট করতে পারি। সিলেক্ট অপারেশনের কুয়েরীগুলোর ক্ষেত্রে ExecuteNonQuery()
ফাংশনটা দিয়ে কুয়েরীগুলো এক্সিকিউট হলেও যে ডাটাগুলো আম্মাদের কুয়েরীটা সিলেক্ট করবে সেগুলো দিয়ে কাজ করাটা মোটামুটি কঠিন কাজ/কাজ করা যায় না বললেও চলে। এই টপিক্সটা নিয়ে আমরা পরবর্তী কোন পোষ্টে আলোচনা করব।
আজকের পোষ্টের জন্য সম্পূর্ন একটা কোডের উদাহরনঃ
try ব্লকে আমরা ডাটা ইনসার্টের সবগুলো কাজ করব এবং catch ব্লকে শুধুমাত্র ডাটাবেইজ কানেকশনের কোন এরর থাকলে শুধুমাত্র সেটা ম্যাসেজ হিসেবে প্রিন্ট করব।
try ব্লকের শুরুতে আমাদেরকে ডাটাবেইজ কানেকশনটা অন করতে হবে। এজন্য আমাদেরকে MySqlConnection এর ইন্সট্যান্সটা দিয়ে আমরা MySqlConnection ক্লাসের Open() ফাংশনটা কল দিতে হবে।
এরপর আমাদেরকে কুয়েরীটা এক্সিকিউট করতে হবে। এজন্য আমাদেরকে MySqlDataAdapter এর ইন্সট্যান্সটা দিয়ে ExecuteNonQuery() ফাংশনটা কল করতে হবে।
নোটঃ ExecuteNonQuery() ফাংশনটা দিয়ে ইনসার্ট, ডিলিট, আপডেট এর কুয়েরীগুলো এক্সিকিউট করতে পারি। সিলেক্ট অপারেশনের কুয়েরীগুলোর ক্ষেত্রে ExecuteNonQuery()
ফাংশনটা দিয়ে কুয়েরীগুলো এক্সিকিউট হলেও যে ডাটাগুলো আম্মাদের কুয়েরীটা সিলেক্ট করবে সেগুলো দিয়ে কাজ করাটা মোটামুটি কঠিন কাজ/কাজ করা যায় না বললেও চলে। এই টপিক্সটা নিয়ে আমরা পরবর্তী কোন পোষ্টে আলোচনা করব।
আজকের পোষ্টের জন্য সম্পূর্ন একটা কোডের উদাহরনঃ
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace C_Sharp_Tutorial { public partial class Login : Form { public Login() { InitializeComponent(); } private void button_save_Click(object sender, EventArgs e) { string constr = "server = localhost;database = user; username=root; password=;"; MySqlConnection conn = new MySqlConnection(constr); MySqlDataAdapter adapter = new MySqlDataAdapter(); string query = "insert into info values('" + textBox_firstname.Text + "','" + textBox_lastname.Text + "')"; adapter.InsertCommand = new MySqlCommand(query, conn); try { conn.Open(); adapter.InsertCommand.ExecuteNonQuery(); MessageBox.Show("Informtation is added!", "Success"); conn.Close(); } catch(MySqlException Ex) { MessageBox.Show(Ex.Message, "Error"); } } } }
আশাকরি আজকের পোষ্টটা বুঝতে আপনাদের কোন সমস্যা হয় নি। পরবর্তী পোষ্টে আমরা সি শার্প প্রজেক্টে মাইএসকিউএল ডাটাবেইজের সিলেক্ট অপারশনের কাজ কিভাবে করতে হয় তা দেখব।
No comments