تکین وب | آموزش برنامه نویسی
تکین وب | آموزش برنامه نویسی

اتصال به پایگاه داده در جاوا (قسمت اول)

۱۰ تیر ۱۳۹۵

اگر دقت کرده باشید گاهی  برای دسترسی به اطلاعاتی خاص لازم است نام کاربری و رمز عبور خود را وارد کنید تا سیستم بتواند براساس نام کاربری و رمز عبور که شما در اختیارش قرار داده اید ، در پایگاه داده ی خود جستجو کند و اطلاعاتی را در اختیار شما قرار دهد . (این تنها یک نمونه از کاربرد جستجو در پایگاه داده براساس اطلاعات ورودی می باشد . )

در این بخش و بخش بعدی می خواهیم با استفاده از یک یوزر اینترفیس ساده ی زبان برنامه نویسی جاوا و با ایجاد یک پایگاه داده ی دلخواه ، همین کار را پیاده سازی کنیم . در واقع می خواهیم زبان برنامه نویسی جاوا را به پایگاه داده پیوند دهیم : (اگر با نحوه ی ایجاد یک پایگاه داده آشنایی ندارید ، به این  قسمت  مراجعه نمایید )

در ابتدا یک پایگاه داده به نام Takinweb ایجاد می کنیم که در آن از دوجدول book و جدول user که اولی برای نگه داری اطلاعات کتابهای یک کتابخانه و دومی برای نگه داری اطلاعات کاربران ایجاد شده اند :

جدول book :

create table book (id int , book_name text , author text , primary key (id));

و جدول user :

create table user (user_id int , username text , pass text , primary key (user_id));

همانطور که در قسمت قبلی گفته شد ، باید به وسیله قسمت Insert به پر کردن اطلاعات مربوط به جدولها بپردازیم . بعد از این کار می خواهیم با چند تابع ساده ی برنامه نویسی جاوا کار مد نظرمان را انجام دهیم .

تنظیمات محیط برنامه نویسی جاوا :

در ابتدا باید گفت که از کلاس JFrame برای این کار استفاده می شود . (اگر با این کلاس آشنایی ندارید به آمورشی که در کانال تکین وب ارائه شده است ، مراجعه نمایید. )

بعد از ایجاد یک پروژه ی جدید باید با کلیک راست کردن بر روی Source packages و انتخاب New ، گزینه ی …Java Packege، را انتخاب کنید . سپس در پنجره ی باز شده با انتخاب یک نام دلخواه برای پکیج ،  finish را انتخاب نمایید :

1

حالا باید با کلیک راست کردن بر روی پکیج ایجاد شده و سپس گزینه ی new ، یک JFrame form را ایجاد کنید :

2

بعد از انجام این کار صفحه ای برای شما باز میشود که باید کدهای مربوطه را درآن بنویسیم . این قسمت همانطور که در شکل قرار دارد ، در تب Source قرار دارد . این صفحه نیز دارای قسمتی برای طراحی فریم به نام Design می باشد . (از قسمت سمت راست برای طراحی استفاده می شود ) :

3

اما همانطور که گفته شد کدهای خود را باید در قسمت Source بنویسیم .  به همین منطور به این تب میرویم و در قسمت کلاسی که ایجاد کرده ایم ، آن متغیرها و توابع مورد نیاز را می نویسیم .

قبل از شروع به نوشتن کدها ، لازم است با  متدها و متغیرهایی که قرار است با آنها کار کنیم ، آشنا شوید .

در ابتدا به معرفی JDBC می پردازیم . JDBC مخفف Java DataBase Connectivity می باشد .در واقع  یک واسط کاربری بین زبان برنامه نویسی جاوا و پایگاه داده می باشد . بنابراین به طور خلاصه برای ایجاد این امکان ، باید *.java.sql را import کنیم .

واسط Connection که برای ارتباط با پایگاه داده استفاده می شود ،

واسط Statement که  یک عبارت SQL را نشان میدهد و بعد از اتصال به پایگاه داده ، دستورات SQL را اجرا می کند .

واسط ResultSet برای نمایش نتایج پایگاه داده استفاده می شود .

متدهای ()Class.forName  و ()DriverManager.registerDriver  رایج ترین روش برای ثبت درایورهای JDBC می باشند .

متد ()DriverManager.getConnection ، یکی از مهمترین متدهاست و برای تعیین کردن نوع ارتباط به کار می رود . در زیر می توانید سه نوع مختلف از overload این تابع را ببینید :

  • (getConnection(String url

 

(getConnection(String url, Properties prop

 

(getConnection(String url, String user, String password

هر کدام از این سه نوع به url دیتابیس نیازمند است . (url ، آدرسی است که به دیتابیس شما اشاره می کند و از نوع String است .)

در جدول زیر می توانید اسامی درایورهای JDBC رابه همراه فرمت url آنها مشاهده نمایید :

4

به طور کلی در این پیاده سازی دو تابع تعریف شده است . تابعی برای ایجاد ارتباط با دیتابیس و تابعی برای query زدن در دیتابیس .بنابراین با توجه توضیحات بالا به تعریف متغیرها و متدهای این کلاس می پردازیم :

package mainFrame;
import java.sql.*;
import javax.swing.JOptionPane ;
public class myFrame extends javax.swing.JFrame {
    private Connection con = null ;
    private Statement stmt = null ;
    private ResultSet res = null ;
    public boolean  connected_to_DB ()
    {
        try {
            String username = "root";
            String pass = null ;
            String url = "jdbc: mysql://localhost/takinweb";
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection(url, username, pass);
            
            return true ;
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Can not connect to DataBase!!" + e.getMessage());
            return false ;
        } 
    }
   public boolean Query_to_DB (String _query)
    {
        try {
            stmt = con.createStatement();
            res = stmt.executeQuery(_query);
            if(res.next())
                return true ;
            else
            {
                JOptionPane.showMessageDialog(null, "Nothing!!!");
                return false ;
            }
                
            
        } catch (Exception e) {
             JOptionPane.showMessageDialog(null, "Can not connect to DataBase!!" + e.getMessage());
            return false ;
        }
    }
    public myFrame() {
        initComponents();
    }

    
    @SuppressWarnings("unchecked")                     

   
    public static void main(String args[]) {
        
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new myFrame().setVisible(true);
            }
        });
    }
}	

 

همانطور که گفتیم ، این کلاس با نام myFrame از دو تابع مهم ()connected_to_DB و ()Query_to_DB که هر کدام مقدار true و false را برمیگرداند ، تشکیل شده است .  مثلا در تابع ()connected_to_DB درصورتی که connection برقرار شود ، مقدار true و در صورتی که ایجاد نشود مقدار false برگردانده میشود . همینطور در تابع()Query_to_DB درصورتی که query زده شده به درستی انجام شود و مقادیر در دیتابیس وجود داشته باشند ، مقدار true و درغیر این صورت false برگردانده می شود .

دقت کنید که از یک try…catch برای کنترل خطاها و  از کلاس JOptionPane برای نمایش خطاهای احتمالی استفاده شده است .

به تعریف url با توجه به آنچه در شکل بالا و در جدول قرار دارد ، توجه کنید . (نام دیتابیس ایجاد شده ، takinweb می باشد .)

یک توضیح هم درمورد خط ۲۷  و ۲۸ :

در خط ۲۷ متد executeQuery به اجرای  query ای از ورودی تابع اصلی یعنی  ()Query_to_DB وارد شده ؛ استفاده می کند . اگر query درست بود و چیزی در res قرار گرفت (یعنی از این query مقداری از دیتابیس برگردانده شد) ، مقدار trru برگردانده می شود . (تابع ()next به همین منطور قید شده است .)

در این بخش به کدهایی برای ایجاد ارتباط با دیتابیس پرداخته شد . در آموزش بعدی به پیاده سازی طراحی فریم و کدهای مربوط به آن خواهیم پرداخت …

با ما همراه باشید …

در ضمن اگر اینستاگرامی هستید حتما @Takinweb را فالو کنید….

درباره ی عطیه رحمانی

دیدگاه ها

دیدگاه خود را به ما بگویید.

کلیه ی حقوق مادی و معنوی مطالب متعلق به سایت تکین وب می باشد و کپی برداری و بازنشر آن بدون ذکر منبع کاری غیر حرفه ای و غیر اخلاقی و قابل پیگرد قانونی خواهد بود.
کانال تلگرام تکین وب