[英]How to set-up a client-server program and a database together in Java?
I need to create a program that has a client, server, and a database The client needs to input data into the database or query it via the server, I am using MySQL and JDBC to connect MySQL to my java code. 我想知道理想的設置是什么。
例如,我使用以下代碼連接到我的數據庫:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class test2 {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/CovidPreventation";
String username = "test";
String password = "test";
System.out.println("Connecting database...");
try (Connection connection = DriverManager.getConnection(url, username, password)) {
System.out.println("Database connected!");
} catch (SQLException e) {
throw new IllegalStateException("Cannot connect the database!", e);
}
}
}
我想知道這應該在哪里真正 go,我應該在服務器 class 或連接到服務器的單獨 class 中擁有它。 這是我第一次做這樣的事情,我希望我的做法很好,因此感謝您的幫助。
DataSource
SQL package 定義了DataSource
接口。 該類型的 object 用於保存數據庫連接信息,例如數據庫服務器地址、數據庫用戶名、密碼等。
選擇該接口的實現。 JDBC 驅動程序通常帶有一個或多個特定於該特定數據庫的實現。 您需要特定於該數據庫的實現,因為各種數據庫具有各種功能和設置。
返回更通用類型的 object 接口,而不是更具體的類型,具體實現。 這樣做可以讓您靈活地將具體的 class 換成另一個,而不會破壞任何調用代碼。
private DataSource configureDataSource ( )
{
System.out.println( "INFO - `configureDataSource` method. " + Instant.now() );
com.mysql.cj.jdbc.MysqlDataSource dataSource = Objects.requireNonNull( new com.mysql.cj.jdbc.MysqlDataSource() ); // Implementation of `DataSource`.
dataSource.setServerName( "db-mysql-lon3-433-do-user-89673-1.x.db.ondigitalocean.com" );
dataSource.setPortNumber( 24_090 );
dataSource.setDatabaseName( "defaultdb" );
dataSource.setUser( "scott" );
dataSource.setPassword( "tiger" );
return dataSource;
}
在您的應用程序中保留該DataSource
object。 當需要數據庫連接時,調用DataSource#getConnection
。
最終,您可能希望使用 JNDI 來獲取DataSource
object。 這使您能夠通過 Jakarta EE 服務器、LDAP 服務器等外部化數據庫配置,而不是硬編碼用戶名、密碼等。
所有你需要一個 jdbc 驅動程序,你可以在這里得到它: https://mvnrepository.com/artifact/mysql/mysql-connector-java
並將 jar 文件添加到您的 ide
在您需要像這樣在代碼中調用它之后:
public static Connection getConnection(String dbURL, String userName,
String password) {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(dbURL, userName, password);
System.out.println("connect successfully!");
} catch (Exception ex) {
System.out.println("connect failure!");
ex.printStackTrace();
}
return conn;
}
我猜您是在詢問應用程序的設計/架構。 如果是這種情況,那么您應該遵循 MVC 架構模式。
** 什么是 MVC?**
MVC 具有三個主要組件:
他們每個人都有特定的職責。
Model
Model 負責或維護數據。 它實際上連接到數據庫。 因此,您想要執行的任何數據操作(即添加/更新/刪除/插入)都在 model 中完成。 基本上模型只與 Controller 對話,並將所需的數據提供給 controller。 即 Model 從不直接與數據通信。
看法
數據表示,即 UI(Html/CSS 部分)由 View 完成。 Controller 向 View 提供數據,這些數據將顯示給最終用戶。 即視圖只對 controller 說話。
Controller
Controller 啟用視圖和 model 之間的交互。 它不必擔心業務邏輯。 它會告訴 model 應該做什么。 從 Model 接收到數據后,它會將其發送到 View。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.