PostgreSQLアプリケーション(2)--メモリ回収とjava接続


一.ゴミの整理について
PostgreSQLのbinディレクトリの下にvacuumdbというプログラムがあり、メモリゴミを回収するために使用されています.このデータベースが自分でごみを回収するメカニズムを提供しないことは多くの人の非難の的となっている.しかし、このデータベースを使う限り、この現実を受け入れなければなりません.コマンドラインの下でvacuumdb--helpでコマンドオプションを表示します.
私たちがよく使うのは次のコマンドです.
       vacuumdb -d yourdbname -f -z -v
ここで、-dは整理するデータベースを示し、-fは全面的な整理を実行することを指し、-zは更新整理(最適化)のヒントを出力し、-vは情報を出力装置(標準出力)に書くことを指す.
また、-U yousername-W yourpasswordを追加して実行することもできます.それ以外の場合、デフォルトではオペレーティングシステムの現在のユーザー名をログイン名としてログインします.
 
これを知ったら、オペレーティングシステムが適切な時間にクリーンアップコマンドを実行するようにコマンドを書くことができます.
 
二.java接続
くだらないことは言わないで、直接コードで話します.
まず次の表を作成します.
create table sample (
    id int,
    name varchar(20)
);

 
package test;

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

public class PostgresTest {
	public static void main(String[] args) throws Exception {
		//    
		Class.forName("org.postgresql.Driver").newInstance();
		
		//    
		String connectionString = "jdbc:postgresql://localhost:5432/mydb";
		Connection conn = DriverManager.getConnection(connectionString, "zhangyt", "zhangyt");
		if(conn != null) {
			System.out.println("       ");
		}
		
		Statement stmt = conn.createStatement();
		//      
		stmt.executeUpdate("insert into sample values(2, '   ')");
		
		//      
		ResultSet rs = stmt.executeQuery("select * from sample");
		while(rs.next()) {
			System.out.println(rs.getInt(1) + " " + rs.getString(2));
		}
		
		rs.close();
		stmt.close();
		conn.close();
	}
} 

 
 PostgreSQLアプリケーション(1)でドライバについて言及したことに注意してください.ドライブ関連のjarパッケージをclasspathに含める必要があります.
 
同時に私もwebのテストを書きました.同じように簡単です.jspがデータをコミットし、servletが要求を処理します.文字化けしの問題を防ぐために、細部に注意してください.私のこの例の主な目的はpostgresが自分が以前出会ったことのない文字化けの問題が現れるかどうかを見ることです.事実は証明していない.Oracleと同様に、データベースを構築するときにエンコードを指定します.mysqlのように柔軟ではなく、どこでもコードを設定できます.
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    
    
    <form name="form1" method="post" action="DoPostgresTest">
    <input type="text" name="username"><br>
    <input type="submit" value="  ">
    </form>

 
package test;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

 public class DoPostgresTest extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
   
	public DoPostgresTest() {
		super();
	}   	
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}  	
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html");
		
		String username = request.getParameter("username");
		
		try {
			//    
			Class.forName("org.postgresql.Driver").newInstance();
			
			//    
			String connectionString = "jdbc:postgresql://localhost:5432/mydb";
			Connection conn = DriverManager.getConnection(connectionString, "zhangyt", "zhangyt");
			if(conn != null) {
				System.out.println("       ");
			}
			
			Statement stmt = conn.createStatement();
			//      
			stmt.executeUpdate("insert into sample values(2, '"+ username +"')");
			
			//      
			ResultSet rs = stmt.executeQuery("select * from sample");
			while(rs.next()) {
				response.getWriter().println(rs.getInt(1) + " " + rs.getString(2) + "<br>");
			}
			
			rs.close();
			stmt.close();
			conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}   	  	    
}

Web.xmlに次の構成を追加
  <servlet>
    <description></description>
    <display-name>DoPostgresTest</display-name>
    <servlet-name>DoPostgresTest</servlet-name>
    <servlet-class>test.DoPostgresTest</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>DoPostgresTest</servlet-name>
    <url-pattern>/DoPostgresTest</url-pattern>
  </servlet-mapping>