一.关于垃圾清理
在PostgreSQL的bin目录下有一个名为vacuumdb的程序,是用来回收内存垃圾的。该数据库不提供自己回收垃圾的机制成为很多人的诟柄。但是只要你用该数据库,就一定要接受这个现实。在命令行下用vacuumdb --help查看个命令选项。
我们常用的是如下命令
vacuumdb -d yourdbname -f -z -v
其中-d指明要整理的数据库,-f 指执行全面整理, -z指输出更新整理(优化)提示,-v指把信息写出到输出设备(标准输出)。
我们还可以增加 -U youusername - 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>
分享到:
相关推荐
MySQL与PostgreSQL均提供了JDBC驱动程序,允许Java应用程序访问数据库。 #### 九、表类型与索引类型 MySQL的表类型和索引类型受到存储引擎限制,如MyISAM支持B-Tree,InnoDB也支持B-Tree。PostgreSQL则更为灵活,...
数据库连接池是现代应用程序开发中的重要组成部分,尤其是在Java和.NET框架中。数据库连接池是一种管理数据库连接的技术,它允许多个请求共享有限数量的数据库连接,而不是为每个请求创建新的连接。这种技术大大提高...
本项目"Java_Test.zip_java_java数据库工程"旨在为初学者提供一个基础平台,以学习和掌握Java编程语言以及如何利用Java连接数据库。下面将详细阐述相关知识点。 1. **Java编程基础**: - **语法特性**:Java采用类...
在Java应用程序中与PostgreSQL数据库交互时,性能是至关重要的因素。PostgreSQL的Java驱动程序,也称为JDBC驱动程序,是实现这种交互的核心组件。然而,有时可能会遇到连接性能问题,这可能会影响应用程序的整体效率...
- **连接回收策略**:合理设定空闲连接回收策略,避免内存泄漏。 6. **与其他数据库驱动的兼容性** DBCP作为一个通用的连接池,支持多种JDBC驱动,如MySQL、Oracle、PostgreSQL等。只需正确配置JDBC驱动类和...
Java的语法与C++相似,但更简化,同时增加了垃圾回收机制,使得程序员无需手动管理内存。 Java开发语言的核心特性包括: 1. **平台无关性**:Java虚拟机(JVM)使得Java程序能在不同的操作系统上运行,包括Windows...
HikariCP是一款高效、高性能的Java数据库连接池,它被设计为替代传统连接池如C3P0、DBCP等,以提供更快的数据库访问速度和更好的资源管理。其名称“Hikari”在日语中意为“光”,象征着它的核心特性——速度与轻量化...
开源数据库连接池c3p0是一款广泛应用于Java后端开发中的数据库连接管理工具,它能够有效地管理和优化数据库连接,提高应用的性能和响应速度。c3p0的主要功能包括连接池的创建、维护以及自动回收资源,使得多个并发...
C3P0连接池是Java开发中常用的数据库连接池组件,它可以帮助应用程序高效、稳定地管理数据库连接。C3P0是由Maurice Priess创建的一个开源项目,它旨在提供一个健壮、完全免费的JDBC连接池实现,以解决数据库连接管理...
- 由于运行在Java平台上,RingoJS可以轻松连接和操作各种Java支持的数据库,如MySQL、PostgreSQL、MongoDB等,提供了灵活的数据存储解决方案。 - 使用Java的JDBC驱动,开发者可以编写SQL语句或使用ORM(对象关系...
数据库连接是指应用程序与数据库管理系统(DBMS)之间建立的通信链路,使得数据的读取、写入和更新成为可能。以下是对数据库连接的详细说明: 1. **连接方式**: - **TCP/IP连接**:最常见的连接方式,通过网络...
2. 销毁连接池:在应用关闭时,记得关闭DBCP连接池,释放所有资源,防止内存泄漏。 3. 异常处理:在使用DBCP时,应妥善处理可能出现的数据库连接异常,如超时、无法获取连接等,确保程序的健壮性。 4. 性能调优:...
PostgreSQL严格遵循ACID原则,支持外键、连接、视图、触发器和存储过程(支持多种编程语言,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl和ODBC)。 在数据类型方面,PostgreSQL提供了丰富的支持,包括INTEGER、...
4. 资源回收:当连接不再使用时,DBCP会自动回收,释放连接资源,防止内存泄漏。 5. 故障检测:DBCP提供心跳检测机制,定期检查数据库连接是否正常,如果发现异常,会自动关闭并尝试重新建立连接。 6. 支持多种...
总结来说,Java和C++在数据库连接上通过各自的API和库与数据库交互,而在游戏设计上,Java适合轻量级和Web游戏,C++则更擅长于高性能的3D游戏。通过分析和学习提供的源代码,我们可以深入理解这两种语言在实际开发中...
《ArcSdeSDK:C API与JAVA API深度解析》 ArcSdeSDK是Esri公司提供的一个核心开发工具包,用于构建与ArcGIS Server交互的应用程序。它支持两种主要的编程接口:C API(应用程序编程接口)和JAVA API,允许开发者以...
Apache Tomcat是一款开源的Java Servlet容器,主要用于部署和运行Java Web应用程序,特别是那些基于Java EE的Web应用。在Linux环境中,Tomcat与操作系统紧密结合,提供高效稳定的服务。最新版的Apache Tomcat 8.5.69...
1. **Java基础知识**:Java是一种强类型、面向对象的编程语言,具有垃圾回收机制,能够自动管理内存,降低了程序出错的可能性。它的JVM(Java虚拟机)使得代码可以在不同操作系统上运行,实现了“一次编写,到处运行...
HikariCP是一款高效、高性能的Java JDBC连接池,它被设计为替代传统连接池如C3P0和DBCP,以提供更快、更稳定的数据访问性能。在HikariCP v3.4.5这个版本中,我们可以深入探讨其在数据库连接管理、性能优化以及配置...
学习和使用RingoJS,开发者不仅可以掌握JavaScript在服务端的应用,还能深入理解Java平台的优势,比如JVM的内存管理和垃圾回收机制,以及Java的类库和框架。这对于提升全栈开发能力是非常有帮助的。同时,由于...