資料庫實驗九--OpenGauss(使用JDBC連線資料庫)
實驗要求
瞭解如何使用JDBC連線資料庫。JDBC(Java Database Connectivity,Java資料庫連線)是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問介面,應用程式可基於它操作資料。openGauss庫提供了對JDBC 4.0特性的支援,需要使用JDK1.8版本編譯程式程式碼。
完成以下內容:
- 在openGauss中建立資料庫、表;
- 使用jdbc連線到新建立的資料庫;
- 在java程式中改變資料庫中的值或者輸出資料庫中的值;
- 請參考華為提供的實驗手冊:openGauss場景化綜合應用實驗。
使用JDBC連線資料庫
在OpenGauss中建立資料庫、表請參考之前的實驗。
本實驗選用JDBC為1.1.0版本
解壓後,把postgresql.jar
匯入到我們要編寫的java專案裡。(ctrl+alt+shift+s
匯入jar包)
lib為在實驗九專案下新建的目錄,匯入後完整專案結構如上圖。
注意:遠端登入不允許使用omm使用者
我們需要重新新建一個使用者。同時需要授予新使用者許可權:
接著我們要配置客戶端接入認證,執行遠端連線(這步要退出openGauss,在命令列執行)
例如,下面示例中配置允許IP地址為10.10.0.30的客戶端訪問本機。
gs_guc set -N all -I all -h "host all shiyanjiu 10.10.0.30/32 sha256"
另外,我們還需修改postgresql.conf
和pg_hba.conf
檔案。
此檔案位於postgresql
資料檔案目錄中,預設為/var/lib/pgsql/data/
。將postgresql.conf
修改如下:listen_addresses = '*'
。
pg_hba.conf
中增加需要連線該資料庫主機的ip地址。如下所示,增加對主機0.0.0.0
的信任。
host all all 0.0.0.0/0 sha256
先使用find命令查詢檔案地址(不連線資料庫,登陸root賬戶,並且用cd /
返回根目錄)
find -name postgresql.conf
用vi修改:
vi postgresql.conf
進入vi後先按i進入插入模式,找到listen_addresses
,修改
按esc
,之後按:wq
儲存退出
這樣第一個檔案就修改完了。
同樣的方法修改第二個檔案pg_hba.conf
執行java程式碼:
package opengauss;
import java.sql.*;
public class connectsql {
//以下程式碼將獲取資料庫連線操作封裝為一個介面,可通過給定使用者名稱和密碼來連線資料庫。
public static Connection getConnect(String username, String passwd)
{
//驅動類。
String driver = "org.postgresql.Driver";
//資料庫連線描述符。
String sourceURL = "jdbc:postgresql://192.168.56.124:26000/postgres";
Connection conn = null;
try
{
//載入驅動。
Class.forName(driver);
}
catch( Exception e )
{
e.printStackTrace();
return null;
}
try
{
//建立連線。
conn = DriverManager.getConnection(sourceURL, username, passwd);
System.out.println("Connection succeed!");
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
return conn;
}
public static void main(String[] args) {
// TODO 自動生成的方法存根
new connectsql();
connectsql.getConnect("shiyanjiu","openGauss@123");
}
}
連線成功
執行查詢
我們現在來查詢sc表,首先要把sc表的許可權給shiyanjiu
使用者
GRANT ALL PRIVILEGES ON sc TO shiyanjiu;
之後修改java程式碼
package opengauss;
import java.sql.*;
public class connectsql {
//以下程式碼將獲取資料庫連線操作封裝為一個介面,可通過給定使用者名稱和密碼來連線資料庫。
public static Connection getConnect(String username, String passwd)
{
//驅動類。
String driver = "org.postgresql.Driver";
//資料庫連線描述符。
String sourceURL = "jdbc:postgresql://192.168.56.124:26000/db_cc";
Connection conn = null;
try
{
//載入驅動。
Class.forName(driver);
}
catch( Exception e )
{
e.printStackTrace();
return null;
}
try
{
//建立連線。
conn = DriverManager.getConnection(sourceURL, username, passwd);
Statement stmt = null;
// 執行查詢
stmt = conn.createStatement();
String sql;
sql = "select * from SC;";
ResultSet rs = stmt.executeQuery(sql);
// 展開結果集資料庫
while(rs.next()){
// 通過欄位檢索
String sno = rs.getString("sno");
String cno = rs.getString("cno");
int grade = rs.getInt("grade");
// 輸出資料
System.out.print("sno: " + sno);
System.out.print("cno: " + cno);
System.out.print("grade: " + grade);
System.out.print("\n");
}
// 完成後關閉
rs.close();
stmt.close();
conn.close();
System.out.println("Connection succeed!");
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
return conn;
}
public static void main(String[] args) {
// TODO 自動生成的方法存根
new connectsql();
connectsql.getConnect("shiyanjiu","openGauss@123");
}
}
執行: