> 데이터 베이스 > MySQL 튜토리얼 > JDBC连接PostgreSQL数据库的若干问题

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

WBOY
풀어 주다: 2016-06-07 15:36:17
원래의
1367명이 탐색했습니다.

首先说一个我在创建数据库的时候遇到的一个问题: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
로그인 후 복사
我少写了一个冒号:
jdbc:postgresql//localhost:5432/newDB
로그인 후 복사
导致数据库连接失败。

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

解决方法如下:

UUID id = UUID.randomUUID();
stmt.setObject(1, id);
로그인 후 복사
设置成Object类型就好了。

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿