您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > Postgre-JDBC
2.JavaJDBC连接PostgreSQL例子Class.forName(org.postgresql.Driver);Connectionconnection=null;connection=DriverManager.getConnection(jdbc:postgresql://hostname:port/dbname,username,password);connection.close();一个完整的例子:File:JDBCExample.javaimportjava.sql.DriverManager;importjava.sql.Connection;importjava.sql.SQLException;publicclassJDBCExample{publicstaticvoidmain(String[]argv){System.out.println(--------PostgreSQL+JDBCConnectionTesting------------);try{Class.forName(org.postgresql.Driver);}catch(ClassNotFoundExceptione){System.out.println(WhereisyourPostgreSQLJDBCDriver?+Includeinyourlibrarypath!);e.printStackTrace();return;}System.out.println(PostgreSQLJDBCDriverRegistered!);Connectionconnection=null;try{connection=DriverManager.getConnection(jdbc:postgresql://127.0.0.1:5432/testdb,mkyong,123456);}catch(SQLExceptione){System.out.println(ConnectionFailed!Checkoutputconsole);e.printStackTrace();return;}if(connection!=null){System.out.println(Youmadeit,takecontrolyourdatabasenow!);}else{System.out.println(Failedtomakeconnection!);}}}PostgreSQL数据库学习手册之JDBC接口(转)[@more@]Chapter5.JDBC接口TableofContents5.1.设置JDBC驱动5.1.1.获取驱动5.1.2.设置类路径5.1.3.为JDBC准备数据库5.2.使用驱动5.2.1.装入JDBC5.2.2.装载驱动5.2.3.与数据库联接5.2.4.关闭联接5.3.发出查询和处理结果5.3.1.使用Statement或PreparedStatement接口5.3.2.使用ResultSet(结果集)接口5.4.执行更新5.5.创建和更改数据库对象5.6.存储二进制数据5.7.PostgreSQL对JDBCAPI的扩展5.7.1.访问这些扩展5.7.2.几何数据类型5.7.3.大对象5.8.在一个多Threaded(线程)或Servlet(服务器小应用)环境里使用驱动5.9.连接池和DataSources5.9.1.JDBC,JDK版本支持5.9.2.JDBC连接池API5.9.3.应用服务器:ConnectionPoolDataSource5.9.4.应用:DataSource5.9.5.DataSources和JNDI5.9.6.特定的应用服务器配置5.10.深入阅读作者:最初由PeterT.Mount()执笔,他是JDBC驱动最初的作者.JDBC是Java1.1及以后的核心API.它为SQL兼容的数据库提供了一个标准的接口集合.PostgreSQL提供了类型4JDBC驱动.类型4表明该驱动是用纯Java书写的,并且与数据库之间使用数据库自己的网络协议通讯.因此,驱动是平台无关的.一旦编译,该驱动可以用于任意平台.本章并不想作为完整的JDBC编程的指导,但应该能帮你走出第一步.更多信息请参考标准JDBCAPI文档.同样,读一下包含在源代码里的例子.其中的基本例子在这里使用.5.1.设置JDBC驱动5.1.1.获取驱动预编译好的驱动通常可以在PostgreSQLJDBC站点找到.另外你可以直接从源程序中制作驱动.尽管你只有在自己改动了驱动的代码情况下才需要这么做。相关的细节请参考PostgreSQL安装指导。在安装完成后,驱动应该在PREFIX/share/java/postgresql.jar。生成的驱动应该是为你运行的Java版本制作的。如果你用1.1JDK制作,那么你制作了一愕支持JDBC1规范的驱动,如果你用Java2JDK(比如,JDK1.2或者JDK1.3),你将制作一个支持JDBC2规范的版本。5.1.2.设置类路径要使用驱动,它的JAR归档(如果你从源程序制作,那么名字叫postgresql.jar,否则它很可能叫jdbc7.2-1.1.jar或jdbc7.2-1.2.jar--分别用于jdbc1和jdbc2)必须包含在类路径里,你要么是把路径放到CLASSPATH环境变量里,要么是使用java命令行上的标记.比如,我有一个使用JDBC驱动的应用,该应用访问一个存有天文对象的大数据库.我的应用已经写好了,并且JDBC驱动安装在/usr/local/lib目录,而JavaJDK安装在/usr/local/jdk1.3.1.要运行应用,我可以用∶exportCLASSPATH=/usr/local/lib/finder.jar(1):/usr/local/pgsql/share/java/postgresql.jar:.javauk.org.retep.finder.Main(1)finder.jar里面包含Finder应用.在应用里装载驱动的内容在Section5.2里介绍.5.1.3.为JDBC准备数据库因为Java只使用TCP/IP联接,所以PostgreSQL服务器必须配置成接受TCP/IP联接,我们可以通过在postgresql.conf文件里设置tcpip_socket=true或者启动postmaster的时候带-i参数实现这个目地.同样,在pg_hba.conf文件里的客户端认证设置也要配置好.请参考管理员手册获取细节.JDBC驱动支持trust,ident,password,md5和crypt认证方式.5.2.使用驱动5.2.1.装入JDBC任何使用JDBC的源程序都需要输入java.sql包,用:importjava.sql.*;Important:不要输入postgresql包.如果这样做,你的源码将不能编译,因为javac会被你搞糊涂。5.2.2.装载驱动在你试图与数据库连接之前,你需要装载驱动.有两种方法,那种更好取决于你使用的代码.在第一种方法里,你的代码用Class.forName()方法显式装载驱动.对于PostgreSQL,你要用:Class.forName(org.postgresql.Driver);这样将装载驱动,并且在装载时,驱动将自动与JDBC注册自己.注意:forName()方法可能抛出一个ClassNotFoundException,所以如果驱动不可获得时你需要捕获它.这是最常用的方法,但是把你的代码限制于PostgreSQL专用.如果你的代码以后还要访问其他数据库,并且你不想使用任何PostgreSQL相关的扩展,那么还有第二种方法可用.第二种方法把驱动做为参数在JVM启动时传递给它,使用-D参数.比如:java-Djdbc.drivers=org.postgresql.Driverexample.ImageViewer在这个例子里,JVM将试图把驱动作为它的初始化的一部分装载.一旦完成,启动ImageViewer。现在这个方法更好一点,因为它允许你的代码用于其他数据库,而不用重新编译代码.唯一要修改的东西是URL,我们下面要提到.最后一件事情.当你的代码试图打开一个Connection,而你收到一个抛出的NodriveravailableSQLException例外,这可能是因为驱动不在classpath(类路径)里,或者参数值不正确.5.2.3.与数据库联接在JDBC里,数据库是用URL(UniformResourceLocator)(统一资源定位器)表示的.在PostgreSQL里,这可以由下面几种格式之一表示:*jdbc:postgresql:database*jdbc:postgresql://host/database*jdbc:postgresql://host:port/database这里:host服务器的主机名.缺省是localhost.port服务器监听的端口号.缺省时是PostgreSQL标准的端口号(5432).database数据库名.要联接(数据库),你需要从JDBC获取一个Connection实例.要做这些,你要使用DriverManager.getConnection()方法:Connectiondb=DriverManager.getConnection(url,username,password);5.2.4.关闭联接要关闭数据库联接,只需要对Connection调用close()方法:db.close();5.3.发出查询和处理结果在任何你想向数据库运行一个SQL语句的时候,你都需要一个Statement或PreparedStatement实例.一旦你拥有了一个Statement或PreparedStatement,你就可以发出一个查询.这样将返回一个ResultSet实例,在其内部包含整个结果.Example5-1演示了这个过程.Example5-1.在JDBC里处理一个简单的查询这个例子将发出一个简单的查询然后用一个Statement打印出每行的第一个字段.Statementst=db.createStatement();ResultSetrs=st.executeQuery(SELECT*FROMmytablewherecolumnfoo=500);while(rs.next()){System.out.print(Column1returned);System.out.println(rs.getString(1));}rs.close();st.close();这个例子将使用PreparedStatement发出和前面一样的查询,并且在查询中制作数值.intfoovalue=500;PreparedStatementst=db.prepareStatement(SELECT*FROMmytablewherecolumnfoo=?);st.setInt(1,foovalue);ResultSetrs=st.executeQuery();while(rs.next()){System.out.print(Column1returned);System.out.println(rs.getString(1));}rs.close();st.close();5.3.1.使用Statement或PreparedStatement接口在使用Statement或PreparedStatement接口时必须考虑下面的问题:*你可以将一个Statement或PreparedStatement实例使用任意次.你可以在打开一个联接后马上创建一个Statement实例,并且在联接的生存期里使用之.你必须记住每个Statement或PreparedStatement只能存在一个ResultSet.*如果你需要在处理一个ResultSet的时候执行一个查询,你只需要创建并且使用另外一个Statement.*如果你使
本文标题:Postgre-JDBC
链接地址:https://www.777doc.com/doc-2852008 .html