آموزش جاوا

آموزش اتصال جاوا به SQL Server با استفاده از JDBC

مراحل اتصال جاوا به SQL Server به صورت خلاصه

برای اتصال جاوا به SQL Server مراحل زیر رو باهم انجام میدیم:

  • دانلود درایور JDBC متناسب با ورژن جاوایی که دارید ازش استفاده می کنید از این آدرس.
  • نصب درایور در سیستم
  • اضافه کردن فایل jar به پروژه
  • نوشتن کانکشن استرینگ در برنامه جاوا
  • نوشتن کدهای مخصوص اتصال به دیتابیس
  • بررسی و حل مشکلات احتمالی در ویندوز (غیرفعال بودن TCP/IP ; ست نشدن پورت در تنظیمات SQL ; بلاک شدن پورت 1433 یابلاک شدن کانکشن توسط فایروال ویندوز)

درایور JDBC برای اتصال جاوا به SQL Server

برای اینکه یک اپلیکیشن جاوا بتواند به یک دیتابیس SQL Server متصل شود، باید از درایور JDBC مخصوص SQL Server استفاده کند.

این درایور در پکیج های جاوا موجود نیست و باید به صورت دستی فایل jar. آن را به پروژه اضافه کنیم.

دانلود فایل درایور JDBC مخصوص SQL Server

اول از همه، باید این درایور را بر اساس نسخه ی جاوای اپلیکیشن، دانلود کنیم: آدرس صفحه دانلود درایور

فایل فشرده حاوی درایور رو اکسترکت می کنیم :‌

Java sql server JDBC drivers  در اتصال جاوا به SQL Server

الان که من دارم این قسمت از آموزش جاوا رو براتون می نویسم، ورژن ۱۴ جاوا هم ریلیز شده. همونطور که توی تصویر بالا می بینید، فایل دانلودی ما ۳ تا فایل jar. داخلش هست. شما بر اساس ورژن جاوای پروژه ی خودتون، باید از یکی از این فایلهای jar. استفاده کنید.

مثلا من توی این پروژه تستی که ایجاد کردم، از جاوا ۸ استفاده کردم. پس از فایلی که آخرش به عدد ۸ ختم شده استفاده میکنم. (چجوری استفاده کنیم؟ میگم بهتون)

اضافه کردن فایل jar. در محیط توسعه IntelliJ IDEA و اندروید استودیو

اگر از محیط توصعه IntelliJ IDEA یا اندروید استودیو برای برنامه نویسی جاوا استفاده می کنید:

به مسیر File->Project Structure میریم :‌

intellij java project structrue

در صفحه Project Structure به تب Dependencies میریم و روی دکمه + کلیک می کنیم و گزینه jar or directories رو انتخاب می کنیم:

Java project dependencies

در پنجره ای که باز میشود، به فولدر اکسترکت شده دیرایورتون برید و فایل jar. رو بر اساس ورژن پروژه تون انتخاب کنید و روی دکمه OK کلیک کنین.

اضافه کردن فایل jar به پروژه جاوا

حالا توی صفحه Dependencies باید اسم فایل jar توی لیستتون باشه.

تموم شد. شما با موفقیت فایل jar. درایور JDBC مخصوص SQL Server رو به پروژه تون اضافه کردین.

تست اتصال جاوا به SQL Server

برای اتصال جاوا به SQL Server، اول باید پکیج java.sql رو به صورت کامل در برنامه import کنیم. البته می تونیم به صورت کامل هم import نکنیم و کد نویسی کنیم. و هر جا که IDE کدهای ما رو نشناخت با استفاده از Alt+Enter بسته مورد نیاز رو به صورت مجزا توی پروژه import کنیم.

import java.sql.*;

در مرحله بعد، یک استرینگ بعنوان کانکشن استرینگ تولید می کنیم. فرمت کلی کانکشن استرینگ به این صورت هستش:

String conectionString = "jdbc:sqlserver://******.database.windows.net:1433;"
                        + "database=*******;"
                        + "user=******;"
                        + "password=******;"
                        ;
;

قسمتهایی که با کاراکتر ستاره ***** پر کردم، کدهای ورودی کانکشن استرینگ هستن و مشخصات دیتابیس شما هستن. آدرس سرورSQL و نام دیتابیس و نام کاربری و پسورد. اینها رو باید خودتون وارد کنید.

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

حالا یک بلوک try – catch ایجاد می کنیم و کانکشن رو داخل اون ایجاد می کنیم.

به دلیل اینکه اینترفیس Connection از نوع AutoCloseable هستش اون رو توی یک بلاک try-catch با منبع می نویسیم.

و کانکشن استرینگ رو هم به متد getConnection کلاس DriverManager پاس میدیم که ازش برای اتصال جاوا به SQL Server استفاده کنه.

        try (Connection connection = DriverManager.getConnection(connectionString);
             ) {
            
            System.out.println("Connected to Sql Server ! ");

        }
        // Handle any errors that may have occurred.
        catch (SQLException e) {
            e.printStackTrace();
        }

حالا برای تست اتصال، یک پیغام ساده رو در بلوک try چاپ می کنیم. اگه اتصال با موفقیت انجام نشه، برنامه به بلوک catch میره و این پیغام چاو نمیشه.

بنابر این، نمایش این پیغام نشونه اینه که اتصال برنامه جاوا به SQL Server با موفقیت انجام شده.

کد نهایی اتصال به SQL Server به همراه کوئری زدن در تیبل اخبار

import java.sql.*;

public class SQLDatabaseConnection {
    // Connect to your database.
    // Replace server name, username, and password with your credentials
    public static void main(String[] args) {

        String connectionString =
                "jdbc:sqlserver://SERVER_NAME.database.windows.net:1433;"
                        + "database=Local_570;"
                        + "user=sa;"
                        + "password=123;"
                        ;

        ResultSet resultSet = null;


        try (Connection connection = DriverManager.getConnection(connectionString);
             Statement statement = connection.createStatement();) {
            // Code here.
            System.out.println("Connected to Sql Server ! ");

            // Create and execute a SELECT SQL statement.
            String selectSql = "SELECT * FROM dp_News";
            resultSet = statement.executeQuery(selectSql);

            // Print results from select statement
            while (resultSet.next()) {
                System.out.println("عنوان خبر: " + resultSet.getString("Title"));
                System.out.println(resultSet.getString(2) + " " + resultSet.getString(6));
            }
        }
        // Handle any errors that may have occurred.
        catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

توضیح کدهای بالا:

ما برای گرفتن دیتا از دیتابیس، از اینترفیس java.dql.resultSet و متد getString آن استفاده می کنیم.

کوئری SQL مورد نظر برای اجرا را داخل یک متغیر String به نام selectSql ریختیم.

بعد این متغیر رو بعنوان پارامتر ورودی به statement.executeQuery پاس دادیم و نتیجه رو داخل resultSet ریختیم.

یک حلقه while ایجاد می کنیم و بهش میگیم تا موقعی که resultSet دیتا داره (has next) لوپ رو ادامه بده.

و داخل لوپ از متد getString برای خواندن دیتای داخل هر ستون استفاده کردیم.

متد getString دو نوع پارامتر می گیرد:

  • پارامتر از نوع String که میبایست عنوان ستون در جدول مربوطه می باشد.
  • پارامتر از نوع Integer که شماره ستون مورد نظر در جدول مورد نظر هست.

پیام خطا در صورتی که مشکلی در فایل درایور JDBC وجود داشته باشه

در صورتی که به هر دلیل،‌ مشکلی در نصب این درایور در پروژه وجود داشته باشه، بعد از اجرای کد، پیغام زیر نمایش داده میشه:

No suitable driver found for jdbc:sqlserver

دلایل بروز خطای No suitable driver found for jdbc:sqlserver

  • ممکنه فایل رو درست به پروژه اضافه نکرده باشین.
  • ممکنه فایل خراب یا نصفه رو دانلود کرده باشین.
  • ممکنه ورژن درایوری که انتخاب کردین با ورژن جاوای پروژه تون یکسان نباشه.

حل مشکل دریافت خطای عدم ارتباط با پورت 1433

ممکنه در حین تلاش برای اتصال جاوا به SQL Server این خطا بهتون نمایش داده بشه :

ERROR: The TCP/IP connection to the host 127.0.0.1, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall."

به طور کلی منظورش اینه که من نمیتونم بوسیله پروتکل TCP/IP و از طریق پورت 1433 (که پورت دیفالت SQL Server هست) به SQL Server وصل بشم.

خب سه تا چیز ممکنه باعث این اتفاق شده باشه :

  • فایروال ویندوز
  • غیرفعال بودن TCP/IP در کانفیگ SQL Server
  • ست نبودن پورت 1433 در قسمت Ip Address در کانفیگ SQL Server

چون معمولا اون دوتای آخر اتفاق میوفته ما اول میریم سراغ اونها و بعدش میریم سراغ فایروال.

برای چک کردن این دو مورد در اتصال جاوا به SQL Server باید بریم به sql server configuration manager.

حالا این sql server configuration manager کجا هست؟ از کجا پیداش کنیم؟

با استفاده از کلیدهای ترکیبی ویندوز + R ، پنجره Run ویندوز رو باز می کنیم. و داخلش تایپ می کنیم : SQLServerManager13.msc و اینتر رو میزنیم.

پنجره run کانفیگ SQL  در اتصال جاوا به SQL Server

حالا پنجره sql server configuration manager برای ما باز میشه. ما توی این پنجره، روی علامت کنار Sql Server Network Configuration کلیک می کنیم تا زیرمجموعه هایش برایمان باز شود.

روی زیرمجموعه Protocols کلیک می کنیم.

در پنجره سمت راست نگاه می کنیم ببینیم که آیا مقدار TCP/IP روی Enabled قرار گرفته یا Disabled.

sql server configuration manager

در هر صورت روی TCP/IP دبل کلیک می کنیم(الان میگم چرا). این پنجره باز میشه:

tcp/ip properties در اتصال جاوا به SQL Server
آموزش عیب یابی اتصال جاوا به دیتابیس SQL Server

در این پنجره اگر دیدین که جلوی Enabled نوشته No، هوش و ذکاوت به خرج بدین و تبدیلش کنید به Yes!

پنجره رو نبندین و فقط Apply رو بزنین. یه پیغام بهتون میده که منظورش اینه که برای اینکه تنظیمات عمل کنه باید سرویس SQL ریستارت بشه.

این پیغام رو فعلا نادیده بگیرید (بعداً میایم سراغش).

حالا بالای همین صفحه روی تب IP Addresses کلیک می کنیم , و با صحنه زیر مواجه میشیم:

TCP/IP Properties در اتصال جاوا به SQL Server
آموزش رفع عیب اتصال جاوا به SQL Server

در این پنجره جلوی TCP Port ها مقدار 1433 (پورت پیشفرض SQL) رو وارد کنید.

خب امیدوارم که تونسته باشید مشکلات اتصال جاوا به SQL Server رو برطرف کنید.

برچسب ها

حامد عسکریان

برنامه نویس و عاشق تکنولوژی

دیدگاهتان را بنویسید

همچنین ببینید

بستن
دکمه بازگشت به بالا
بستن
بستن