วิธีเชื่อมต่อ PostgreSQL กับ Java Application

PostgreSQL เป็นฐานข้อมูล SQL แบบโอเพนซอร์สที่มีประสิทธิภาพพร้อมด้วยโครงสร้างเชิงสัมพันธ์เชิงวัตถุ และคุณสมบัติที่แข็งแกร่งมากมายเพื่อให้มั่นใจถึงประสิทธิภาพและความน่าเชื่อถือ ในบทนี้เราจะแสดงวิธีเชื่อมต่อฐานข้อมูล PostgreSQL กับแอปพลิเคชัน Java โฮสต์ เข้ากับ Ruk-Com Cloud

1. ล็อกอินเข้าสู่แดชบอร์ด Ruk-Com Cloud สร้าง Environment ใหม่ ที่เป็นเซิร์ฟเวอร์ Java Application และเลือกฐานข้อมูล PostgreSQL

2. หลังจากสร้างคุณจะได้รับอีเมลพร้อมข้อมูลรับรองการเข้าถึงฐานข้อมูล (โฮสต์ การล็อกอินและรหัสผ่าน)

3. คลิกปุ่ม Config ถัดจากแอปพลิเคชันเซิร์ฟเวอร์ของคุณ (ในกรณีของเราคือ Tomcat) เพื่อเข้าถึง configuration file manager และสร้างไฟล์ mydb.cfg ใหม่ในโฟลเดอร์ /opt/tomcat/temp

4. ระบุรายละเอียดการเชื่อมต่อต่อไปนี้ในไฟล์ mydb.cfg:

host=jdbc:postgresql://{host}/{db_name}
username={user}
password={password}
driver=org.postgresql.Driver


และส่วนนี้

  • {host} – ลิงก์ไปยังโหนดฐานข้อมูลโดยไม่มีส่วนโปรโตคอล
  • {db_name} – ชื่อของฐานข้อมูล (ในกรณีของเรา คือ postgres)
  • {user} และ {password} – ข้อมูลรับรองผู้ใช้ของแอดมิน

หมายเหตุ : 

โดยปกติสำหรับการใช้งานจริงขอแนะนำให้กำหนดผู้ใช้ที่ถูกจำกัดสิทธิ์ใหม่ผ่าน phpPgAdmin สำหรับแอปพลิเคชันด้วยเข้าถึงฐานข้อมูลเฉพาะได้เท่านั้น

อย่างไรก็ตามสำหรับตัวอย่างนี้เราจะใช้ user ที่เป็นค่าเริ่มต้น (เช่น webadmin ที่มีสิทธิ์เข้าถึงเซิร์ฟเวอร์ระดับผู้ดูแลระบบเต็มรูปแบบ) และฐานข้อมูล (postgres)

5. ด้านล่างนี้คุณจะเห็นโค้ดของแอปพลิเคชันที่ใช้ในบทการสอนนี้

package connection;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DbManager {
public String date = new SimpleDateFormat("dd-MM-yyyy-HH-mm").format(new Date());
private final String createTable = "CREATE TABLE \"" + date + "\" (id INT, data VARCHAR(100));";
private static final int LoginTimeout = 10;
public DbManager() {

}

public Connection createConnection() throws IOException, ClassNotFoundException, SQLException {
Properties prop = new Properties();
System.out.println("\n\n=======================\nJDBC Connector Test " + date);
System.out.println("User home directory: " + System.getProperty("user.home"));
String host;
String username;
String password;
String driver;
try {
prop.load(new java.io.FileInputStream(System.getProperty("user.home") + "/mydb.cfg"));
host = prop.getProperty("host").toString();
username = prop.getProperty("username").toString();
password = prop.getProperty("password").toString();
driver = prop.getProperty("driver").toString();
} catch (IOException e) {
System.out.println("Unable to find mydb.cfg in " + System.getProperty("user.home") + "\n Please make sure that configuration file created in this folder.");
host = "Unknown HOST";
username = "Unknown USER";
password = "Unknown PASSWORD";
driver = "Unknown DRIVER";
}

System.out.println("host: " + host + "\nusername: " + username + "\npassword: " + password + "\ndriver: " + driver);
Class.forName(driver);
System.out.println("--------------------------");
System.out.println("DRIVER: " + driver);
System.out.println("Set Login Timeout: " + LoginTimeout);
DriverManager.setLoginTimeout(LoginTimeout);
Connection connection = DriverManager.getConnection(host, username, password);
System.out.println("CONNECTION: " + connection);
return connection;
}

public String runSqlStatement() {
String result = "";
try {
Statement statement = createConnection().createStatement();
System.out.println("SQL query: " + createTable);
statement.execute(createTable);
} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(DbManager.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Exception occurred: " + ex);
result = ex.getMessage();
} catch (SQLException ex) {
ex.printStackTrace();
result = ex.getMessage();
}
return result;
}
}

6. สามารถใช้ Code ดังต่อไปนี้ deploy เพื่อทดสอบได้

https://download.jelastic.com/public.php?service=files&t=18753849900d2461b3162bd4355f834d&download

หมายเหตุ  : แอปพลิเคชันตัวอย่างของเรามี Library jdbc-connector สำหรับการเชื่อมต่อฐานข้อมูล PostgreSQL อยู่แล้ว อย่างไรก็ตามสำหรับโปรเจ็กต์อื่น ๆ คุณอาจต้องอัปโหลด Libary ไปยังโฟลเดอร์ webapps/{app_context}/WEB-INF/lib บนเซิร์ฟเวอร์ของคุณด้วยตนเอง (อย่าลืมรีสตาร์ทเซิร์ฟเวอร์ในภายหลังเพื่อบันทึกการเปลี่ยนแปลงค่า)

7. หลังจากติดตั้งสำเร็จให้คลิก Open in Browser ที่ถัดจากแอปพลิเคชันเซิร์ฟเวอร์

8. ภายในแท็บเบราว์เซอร์ที่เปิดอยู่ให้คลิกปุ่ม Create test table in your database

คำขอของคุณจะได้รับการดำเนินการในไม่ช้าโดยจะแสดงข้อความผลลัพธ์ที่ได้

9. มาเข้าถึงฐานข้อมูลของเราผ่าน phpPgAdmin เพื่อให้แน่ใจว่ามีการสร้างตารางใหม่ (ข้อมูลรับรองการเข้าถึงอยู่ในอีเมลที่อธิบายไว้ในขั้นตอนที่สองของคู่มือนี้)

อย่างที่คุณเห็น ตารางใหม่ (ตั้งชื่อตามวันที่และเวลาที่สร้าง) ได้รับการเพิ่มเรียบร้อยแล้วโดยแอปพลิเคชัน Java ของเรา สร้างการเชื่อมต่อสำเร็จแล้ว! ลองใช้ link globally-available Ruk-Com service providers สักอันดูสิ