java如何連接數據庫並對其操作(以PostgreSQL為例)


java如何連接數據庫並對其操作(以PostgreSQL為例)

  • 相關概念
    JDBC(Java Data Base Connectivity)是一種用於執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它是一組用java語言編寫的類和接口組成。JDBC提供了一種基准,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序
    數據庫驅動:我們安裝好數據之后,我們的應用程序不能直接使用數據庫,必須通過相應的數據庫驅動程序,通過驅動程序去和數據庫打交道。其實也就是數據廠商的JDBC接口實現,即對connection等接口的實現類的jar文件

  • 常用接口

    1. Driver接口
      Driver接口由數據庫廠家提供,作為java開發人員,只需要使用Driver接口就可以了。在編程中要連接數據庫,必須先裝載特定的數據庫驅動程序,以PostgreSQL驅動裝載為例:

    Class.forName("org.postgresql.Driver");

    1. Connection接口
      Connection與特定數據庫的連接(會話),在連接上下文中執行sql語句並返回結果,DriverManager.getConnection(url,user,password)方法建立在JDBC URL中定義的數據庫Connection連接上,以連接PostgreSQL為例:

    Connection connection=DriverManager.getConnection("jdbc:postgresql://172.16.55.190:5432/thingsboard",user,password);(設置自己的ip地址,端口號,thingsboard為數據庫名稱)

    1. Statement接口
      用於執行靜態sql語句並返回它所生結果的對象
      三種Statement類:
    • Statement:由CreateStatement創建,用於發送簡單的SQL語句
    • PreparedStatement:可以防止sql注入
    • CallableStatement:

    常用Statement方法:

    • execute(String sql):運行語句,返回是否有結果集
    • executeQuery(String sql):運行select語句,返回ResultSet結果集
    • executeUpdate(String sql):運行insert/update/delete操作,返回更新的行數
    1. ResultSet接口
      ResultSet提供檢索不同類型字段的方法,常用有:getString(int index/String columnName),getFloat(int index/String columnName),getBoolean(int index/String columnName),getObject(int index/String columnName)--獲取數據庫中任意類型的數據
      ResultSet還提供了對結果進行滾動的方法:
    • next();移動到下一行
    • Previous();移動到前一行
    • absolute(int row);移動到指定行
    • beforeFirst();移動到最前面
    • afterLast();移動到最后面
    
   
####實現步驟:
+ 下載驅動(jar包)
  驅動的下載地址:[jar包](https://jdbc.postgresql.org/download.html)
+ eclipse導入jar包
    右鍵點擊創建的項目新建文件夾,文件夾命名為“lib",將下載的jar包復制到lib文件夾中,右鍵點擊導入的jar包,找到構建路徑,點擊添加構建路徑
+ 實現代碼:
```
package Test;

import java.sql.Connection;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class SelectTest {

    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        try {
            String url = "jdbc:postgresql://172.16.55.190:5432/thingsboard";//換成自己PostgreSQL數據庫實例所在的ip地址,並設置自己的端口
            String user = "postgres";
            String password = "123456";  //在這里我的密碼為空,讀者可以自己選擇是否設置密碼
            Class.forName("org.postgresql.Driver"); 
            connection= DriverManager.getConnection(url, user, password);
           //System.out.println("是否成功連接pg數據庫"+connection);
            String sql ="select * from public.syuser";
            statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(sql);
           while(resultSet.next()){
                  //取出列值
                String id = resultSet.getString(2);
                String name = resultSet.getString(8);
                System.out.println(id+"\t\t"+name);
            }
     
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        }
}
```
###語句解析:
> String url = "jdbc:postgresql://172.16.55.190:5432/thingsboard";
jdbc:協議 postgresql:子協議  172.16.55.190:主機  5432:端口 thingsboard:數據庫

創建執行語句的statement
String sql="insert into user(name,pwd) values(?,?)";
PrearedStatement ps = conn.preparedStatement(sql);
ps.setString(1,"col_value");//占位符從第一位開始
ps.setString(2,"123435")
ps.executeQuery();

處理執行結果的ResultSet
ResultSet rs=ps.executeQuery();
While(rs.next()){
    rs.getString("col_name");
    rs.getInt(1);
}

釋放資源
            resultSet.close();
            statement.close();
            connection.close();

[常用Sql語句查詢](https://www.yiibai.com/html/postgresql/2013/080442.html)

本博客部分內容參考自https://www.cnblogs.com/erbing/p/5805727.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM