本次试验怎么用jdbc连接PostGreSql数据库。首先需要安装一个pgsql数据库,安装就不介绍了。安装后自己用SQL创建表,如有下图的库和表,怎么用java带SQL参数连接他取的数据。
PG库下载地址
首先到官网上根据自己的Java版本下载jdbc驱动jdbc下载地址
下载后把驱动投入libs
同时拷贝maven串
把maven串贴入工程
然后添加引用jar包
然后写代码操作数据库
import java.io.File; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import java.lang.Class; import java.util.ArrayList; import java.util.Enumeration; import java.util.jar.JarFile; import java.util.jar.JarEntry; import ZLZJar.*; import java.sql.*; //zlz练习 public class Main { //m主方法 public static void main(String[] args) { try { //自己生成jar包路径 URL url = new File("D:\\ZLZJar\\out\\artifacts\\ZLZJar\\ZLZJar.jar").toURI().toURL(); URL[] urls = new URL[]{url}; //加载程序集 URLClassLoader loader = new URLClassLoader(urls); //加载类 Class c = loader.loadClass("ZLZJar.Test"); //创建对象 Object o = c.newInstance(); //得到方法 Method m = c.getMethod("Hello"); //执行 m.invoke(o); //有参数的方法通过名称无法得到,自己包装一下 //Method mAdd = c.getMethod("Add"); Method mAdd = GetMethod(c, "Add"); Object ret = mAdd.invoke(o, 1, 2); System.out.println("求和结果:" + ret); //转换成接口,这个很重要,后面的实现类都实现特定接口,通过反射得到对象调用,实现多态和动态调用 ITest it = (ITest) o; //接口调用 it.Invoke("zlz调用传入的参数"); PgSqlTest(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } //连接PostGreSql测试 public static void PgSqlTest() { //连接串,最后的是数据库名称 String url = "jdbc:postgresql://localhost:5432/dhclisdata"; //用户 String user = "postgres"; //密码 String password = "SYS"; //建立连接 Connection conn = null; //command PreparedStatement stmt = null; try { //加载驱动 Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection(url, user, password); //编译和执行SQL语句,传输SQL参数查询1997-2000行 String sql = "SELECT * FROM dbo.SYS_Form where \"RowID\">? and \"RowID\";"; stmt = conn.prepareStatement(sql); stmt.setInt(1,1997); stmt.setInt(2,2000); //结果集 ResultSet rs = stmt.executeQuery(); // 处理查询结果 while (rs.next()) { //取列数据 int RowID = rs.getInt("RowID"); String CName = rs.getString("CName"); String Path = rs.getString("Path"); //输出 System.out.println(RowID + "\t" + CName + "\t" + Path); } // 关闭 ResultSet、Statement 和 Connection 对象 rs.close(); } catch (SQLException se) { // 处理 JDBC 异常 se.printStackTrace(); } catch (Exception e) { // 处理 Class.forName 异常 e.printStackTrace(); } finally { // 关闭资源 try { if (stmt != null) { stmt.close(); } } catch (SQLException se2) { } try { if (conn != null) { conn.close(); } } catch (SQLException se2) { } } } //通过类型和名称得到方法 public static Method GetMethod(Class c, String name) { Method[] methods = c.getMethods(); for (Method method : methods) { System.out.println("类名:" + method.getName().intern()); if (method.getName().intern() == name) { return method; } } return null; } }
操作数据库部分
//连接PostGreSql测试 public static void PgSqlTest() { //连接串,最后的是数据库名称 String url = "jdbc:postgresql://localhost:5432/dhclisdata"; //用户 String user = "postgres"; //密码 String password = "SYS"; //建立连接 Connection conn = null; //command PreparedStatement stmt = null; try { //加载驱动 Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection(url, user, password); //编译和执行SQL语句,传输SQL参数查询1997-2000行 String sql = "SELECT * FROM dbo.SYS_Form where \"RowID\">? and \"RowID\";"; stmt = conn.prepareStatement(sql); stmt.setInt(1,1997); stmt.setInt(2,2000); //结果集 ResultSet rs = stmt.executeQuery(); // 处理查询结果 while (rs.next()) { //取列数据 int RowID = rs.getInt("RowID"); String CName = rs.getString("CName"); String Path = rs.getString("Path"); //输出 System.out.println(RowID + "\t" + CName + "\t" + Path); } // 关闭 ResultSet、Statement 和 Connection 对象 rs.close(); } catch (SQLException se) { // 处理 JDBC 异常 se.printStackTrace(); } catch (Exception e) { // 处理 Class.forName 异常 e.printStackTrace(); } finally { // 关闭资源 try { if (stmt != null) { stmt.close(); } } catch (SQLException se2) { } try { if (conn != null) { conn.close(); } } catch (SQLException se2) { } } }
测试
jdbc操作数据库完成,第三个技术点积累完毕