Java连接PostGreSql

本次试验怎么用jdbc连接PostGreSql数据库。首先需要安装一个pgsql数据库,安装就不介绍了。安装后自己用SQL创建表,如有下图的库和表,怎么用java带SQL参数连接他取的数据。

PG库下载地址
Java连接PostGreSql_第1张图片
首先到官网上根据自己的Java版本下载jdbc驱动jdbc下载地址

下载后把驱动投入libs
Java连接PostGreSql_第2张图片
同时拷贝maven串
Java连接PostGreSql_第3张图片

把maven串贴入工程
Java连接PostGreSql_第4张图片

然后添加引用jar包
Java连接PostGreSql_第5张图片

然后写代码操作数据库

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) {
            }
        }
    }

测试
Java连接PostGreSql_第6张图片

jdbc操作数据库完成,第三个技术点积累完毕

你可能感兴趣的:(java,postgresql,开发语言)