赞
踩
1.本文使用的开发软件是eclipse1.7
2.需要下载postgresqlpostgresql-9.2-1002.jdbc3.jar (需要的话在我的资源上下载);需要数据库管理软件Navicat
3.本文是用JDBC连接数据库,通过读取".sql"文件,实现对Postgresql数据库的查询插入操作
(1)打数据库管理软件Navicat,点击左上角的连接,选择PostgreSQL。
(2)填写连接信息,此处只要填写连接名和密码(安装PgSQL时设置的密码),其他的默认即可。localhost为本机地址(远程连接填写其IP地址),5432是PgSQL数据库的端口。填写完连接信息后,点击测试连接,如果连接成功对话框即表示PgSQL Server已开启。点击确定完成PgSQL数据库的连接。
连接完成以后,在左侧会看到连接信息,其中Bolisen子目录下的postgres是一个初始的PgSQL数据库,可以直接使用。也可以选中postgres右击选择新建数据库创建一个新的PgSQL数据库。
开始前的java项目创建省略,下面贴一下我的简单项目图 :!jar包导入的话:新建一个lib(名字随意)文件夹把下载的jar包放进去–>鼠标右击jar包 -->点击Build Path -->然后你点击第一个把它rebuild进去,它就会进入到Referenced Libraries里面(见图一)。dao包主要写对数据的插入方法;Demo包是测试代码;util包是工具包,写连接数据库这些的方法这里插入图片描述
图一:
(1)项目下建一个.properties文件,例如本文的dbcpconfig.properties文件,文件名可自己取,下面贴一下我的配置文件内容:
driver=org.postgresql.Driver
url=jdbc:postgresql://10.167.81.11:27500/postgres?characterEncoding=utf-8
username=user
password=zzr1100!
<!-- \u521D\u59CB\u5316\u8FDE\u63A5 -->
initialSize=10
<!--\u6700\u5927\u8FDE\u63A5\u6570\u91CF -->
maxActive=50
<!-- \u6700\u5927\u7A7A\u95F2\u8FDE\u63A5 -->
maxIdle=20
<!-- \u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5 -->
minIdle=5
<!-- \u8D85\u65F6\u7B49\u5F85\u65F6\u95F4\u4EE5\u6BEB\u79D2\u4E3A\u5355\u4F4D 6000\u6BEB\u79D2/1000\u7B49\u4E8E60\u79D2 -->
maxWait=60000在这里插入代码片
注意:后面的初始化大小最大容量这些参数一定要写,不然就连不通
(2).连接数据库的Java代码,如下:
public class JDBCUtils { private static Properties prop; static { prop = new Properties(); try { InputStream is= JDBCUtils.class.getClassLoader().getResourceAsStream( "dbcpconfig.properties"); prop.load(is); Class.forName(prop.getProperty("driver"));//加载驱动 } catch (Exception e) { System.out.println("出错了"); throw new RuntimeException(e); } } //获取连接 public static Connection getConnection(Connection conn) { if (conn==null) { try { conn=DriverManager.getConnection(prop.getProperty("url"), prop.getProperty("username"), prop.getProperty("password")); } catch (SQLException e) { throw new RuntimeException(e); } } return conn; } //关闭资源 public static void close(Connection conn,PreparedStatement prep,ResultSet rs){ if(rs != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally{ rs = null; } } if(prep != null){ try { prep.close(); } catch (SQLException e) { e.printStackTrace(); } finally{ prep = null; } } if(conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } finally{ conn = null; } } } public static void close(Connection conn,PreparedStatement prep){ if(prep != null){ try { prep.close(); } catch (SQLException e) { e.printStackTrace(); } finally{ prep = null; } } if(conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } finally{ conn = null; } } } } 在这里插入代码片
(1)本文以插入操作举例说明:如下图新建一个sqlfile(名随意)文件夹,再新建一个.sql文件,里面写入你要插入数据的sql语句(注意这里面我只写了一行插入语句进行测试,如果写多行插入语句 ,需要自行再添加逻辑代码)附本文 sql语句示例供参考
INSERT INTO hxdb.person( name, age, sex)VALUES (?, ?, ?)
(2)Java读取sql文件实现
public class FileReader { public static String readText() { String filePath="sqlfile/insert.sql"; StringBuilder sb=new StringBuilder(); //通过路径创建文件 File file = new File(filePath); if (file.isFile() && file.exists()) { try( //文件编码为gbk,这里做个转换 InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8"); //字符缓冲流 BufferedReader br = new BufferedReader(isr);) { String line=null; while ((line = br.readLine()) != null) { sb.append(line); } } catch (IOException e) { e.printStackTrace(); System.out.println("文件读取错误!"); } }else { System.out.println("文件不存在!"); } return sb.toString(); } }
(3)插入数据操作方法类附本文参考(本文Symfware类主要封装查询插入这些方法,实际类名你自己根据项目取好)
public class Symfware { PreparedStatement ps = null; Connection con=null; ResultSet resultSet=null; int result=0; //1.查询person表中所有内容 public void selectPerson(String line) { con=JDBCUtils.getConnection(con);//连接数据库 try { ps=con.prepareStatement(line); System.out.println(ps); resultSet=ps.executeQuery(); while (resultSet.next()) { String id = resultSet.getString("name"); //读取当前行名为id的列的数据 int age1 = resultSet.getInt("age"); // int sex1 = resultSet.getInt("sex"); //System.out.println("name:"+id+"age:"+age1); } } catch (SQLException e) { e.printStackTrace(); }finally { JDBCUtils.close(con, ps,resultSet); } } //2.插入 sql 操作 public int insertContent(String name,int age,int sex ) { String sql=FileReader.readText();//读取到的sql con=JDBCUtils.getConnection(con); try { con.setAutoCommit(false); ps=con.prepareStatement(sql); ps.setString(1, name); ps.setInt(2, age); ps.setInt(3, sex); result=ps.executeUpdate(); System.out.println(result + "11111多少行"); con.commit(); } catch (SQLException e) { e.printStackTrace(); }finally { JDBCUtils.close(con, ps); } return result; } }
以下贴上本文的测试例子
public class Test1 {
public static void main(String[] args) {
Symfware symfware=new Symfware();
symfware.insertContent("1111", 1238, 0);
}
}
题外话:哈哈哈,我的这篇csdn博文还是我今年毕业后七月份进入一个项目组,期间经历的一小段作业,隔了折磨久才有时间想着把它记录一下,但愿其中细节我没搞错(哈哈哈)如有问题,还请见谅!谢谢
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。