Home > Database > Mysql Tutorial > body text

JDBC连接PostgreSQL数据库的若干问题

WBOY
Release: 2016-06-07 15:36:17
Original
1356 people have browsed it

首先说一个我在创建数据库的时候遇到的一个问题:PostgreSQL在创建数据表的时候,我想创建一个User表,但是PLSQL命令提示符提示有错,我后来改成userinfo就好了,我上网查了查要是给User加上引号也可以,即 CREATE TABLE USER (); 下面转入正题给出一个JDBC

首先说一个我在创建数据库的时候遇到的一个问题:PostgreSQL在创建数据表的时候,我想创建一个User表,但是PLSQL命令提示符提示有错,我后来改成userinfo就好了,我上网查了查要是给User加上引号也可以,即 CREATE TABLE "USER" ();

下面转入正题给出一个JDBC连接PostgreSQL的示例:

package cn.tzy.database;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

public class DBConnection {
	public static void main(String[] args) {
		String user = "postgres";
		String password = "19901231";
		//格式为:jdbc:Database Type://IP Address:Port/Database Name
		//比如MySQL为:jdbc:mysql://localhost/newDB
		String url = "jdbc:postgresql://localhost:5432/geopw";
		String driver = "org.postgresql.Driver";
		String tableName = "userinfo";
		String sqlstr = "";
		Connection con = null;
		PreparedStatement stmt = null;
		
		try {
			Class.forName(driver);
			con = DriverManager.getConnection(url, user, password);
			/*
			//这里是插入数据的代码
			sqlstr = "INSERT INTO " + tableName + " VALUES(?, ?, ?, ?, ?)";
			stmt = con.prepareStatement(sqlstr);
			UUID id = UUID.randomUUID();
			stmt.setObject(1, id);
			stmt.setString(2, "TheOneGIS");
			stmt.setString(3, "theonegis@sina.cn");
			stmt.setString(4, "123456");
			stmt.setString(5, "Wuhan University");
			stmt.executeUpdate();
			*/
			
			sqlstr ="SELECT * FROM " + tableName;
			stmt = con.prepareStatement(sqlstr);
			ResultSet results = stmt.executeQuery();
			ResultSetMetaData metaData = results.getMetaData();
			int counts = metaData.getColumnCount();
			for (int i = 0; i <br>
<span>下面主要说一下自己遇到的问题:</span>
<p><span>问题1:在写数据库连接字符串的时候易出错</span></p>
<p><span>本来是</span><br>
</p><pre class="brush:php;toolbar:false">jdbc:postgresql://localhost:5432/newDB
Copy after login
我少写了一个冒号:
jdbc:postgresql//localhost:5432/newDB
Copy after login
导致数据库连接失败。

问题2:我在数据库设计的时候想让表的id类型为UUID,作为行的唯一标示。结果我不知道Java中哪个类型对应中PostgreSQL中的UUID类型。

解决方法如下:

UUID id = UUID.randomUUID();
stmt.setObject(1, id);
Copy after login
设置成Object类型就好了。

问题3:使用PreparedStatement时使用了有参executeQuery()方法,报错后我发现executeQuery()方法只能用于Statement类,虽然PreparedStatement类是她的子类。PreparedStatement在初始化的时候就给定了执行的SQL语句,然后调用无参的executeQuery()方法。

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template