Java连接PostGreSql

news2025/1/23 6:22:36

本次试验怎么用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操作数据库完成,第三个技术点积累完毕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1102051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIP静态路由综合实验

题目&#xff1a; 步骤&#xff1a; 第一步&#xff1a;搭建上图所示拓扑; 第二步&#xff1a;为路由器接口配置IP地址&#xff1b; R1&#xff1a; [R1]display current-configuration intinterface GigabitEthernet0/0/0ip address 192.168.1.1 255.255.255.252 interfa…

FL Studio 2023中文安装设置指南!四招教你玩转FL Studio21!

Fl Studio是一款极具时尚元素的音乐制作软件&#xff0c;对于粉丝群体来说简直是一大福利&#xff01;不仅可以充分发挥你的创造力&#xff0c;还能展现你的音乐才华。这里给你分享几个设置中文的技巧&#xff0c;让你的Fl Studio体验更上一层楼&#xff01; 编曲软件FL Studi…

警惕这款记录音频和电话的Android木马软件SpyNote

导语&#xff1a;近日&#xff0c;一款名为SpyNote的Android木马软件被揭示出其多样化的信息收集功能。该木马软件通常通过短信钓鱼攻击传播&#xff0c;攻击链通过欺骗潜在受害者点击嵌入链接来安装该应用程序。除了要求入侵性权限以访问通话记录、摄像头、短信和外部存储等&a…

vite react react-pdf pdfjs-dist 加载不全的解决方案 cmaps本地路径

pdf.js 字体无法显示 pdfjs-dist加载不全的解决方案 Rollup 配置 rollup-plugin-copy插件&#xff0c;进行打包构建时的文件复制 参考了网上诸多解决方案&#xff0c;都是webpack的引入包方式&#xff0c; 照猫画虎&#xff0c;把vite解决方案奉献给大家 vite.config.js impo…

小程序:uniapp解决主包体积过大的问题

已经分包但还是体积过大 运行时勾选“运行时是否压缩代码”进行压缩 在manifest.json配置&#xff08;开启分包优化&#xff09; "mp-weixin" : {"optimization" : {"subPackages" : true}//.... },在app.json配置&#xff08;设置组件按需注入…

【CANN训练营】UART、SPI、I2C串口通信介绍笔记

UART、SPI、I2C串口通信介绍 UART通信 串行通信和并行通信 数据通信&#xff1a;若干个数据设备之间的信息交换称为数据通信。 两种方式&#xff1a;并行通信和串行通信 并行通信&#xff1a;数据的各位同时传送&#xff0c;每一位数据都需要一条传输线并且需要若干条控制…

H5+Vue3编写官网,并打包发布到同一个域名下

背景 因为html5有利于搜索引擎抓取和收录我们网站更多的内容&#xff0c;对SEO很友好&#xff0c;可以为网站带来更多的流量,并且多端适配&#xff0c;兼容性和性能都非常不错&#xff0c;所以使用h5来编写官网首页。 因为用户个人中心可以通过官网跳转&#xff0c;不需要被浏…

jmeter压测

jmeter强大到很强大 hh~也要压测go的一些东西&#xff0c;这是三年前做的东西了&#xff0c;jmeter不支持grpc调用所以写了一个spring小服务中间层&#xff1a; 具体的jmeter开始了 这里设置线程相关 <h3>调用哪个服务的哪个方法</h3> <h3>BeanShell PrePro…

“脆皮大学生”上热搜,体质变差不能轻视

蕞近&#xff0c;“脆皮大学生”这一词条在网络上走红。“脆皮大学生”指现在新一代大学生&#xff0c;虽然年纪轻轻&#xff0c;但是身体毛病却极多&#xff0c;脆弱到了一碰就坏的地步&#xff0c;出现了“脆皮现象”。 仅2023年9月一个月&#xff0c;郑州一家医院急诊科接诊…

Spring5应用之高级注解开发

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言Conf…

JOSEF约瑟 10KV高压漏电保护继电器BLD-20 φ100mm 50-500mA 导轨安装

系列型号 BLD-20A高压漏电保护继电器 BLD-20高压漏电继电器 BLD-20高压漏电保护继电器 BLD-20X高压漏电保护装置 BLD-G20X高压漏电保护装置 BLD-20RG高压漏电保护继电器 用途 BLD-20漏电继电器(以下简称继电器)主用于交流电压1-10KV系统中,频率为50HZ,对供电系 统的漏…

【C语言】#define宏与函数的优劣对比

本篇文章目录 1. 预处理指令#define宏2. #define定义标识符或宏&#xff0c;要不要最后加上分号&#xff1f;3.宏的参数替换后产生的运算符优先级问题3.1 问题产生3.2 不太完美的解决办法3.3 完美的解决办法 4.#define的替换规则5. 有副作用的宏参数6. 宏与函数的优劣对比6.1 宏…

从0开始学Java:运算符(Operator)与标点符号(Separators)

文章目录 1. 运算符的分类2. 算术运算符3. 赋值运算符4. 关系运算符/比较运算符5. 逻辑运算符6. 条件运算符练习 7. 位运算符&#xff08;了解&#xff09;左移&#xff1a;<<右移&#xff1a;>>无符号右移&#xff1a;>>>按位与&#xff1a;&按位或&…

阿里云优惠券(代金券)免费领取方法及使用教程分享

阿里云优惠券是阿里云提供给用户的一种优惠凭证&#xff0c;通常包括代金券和折扣券&#xff0c;领取之后支付订单时可以抵扣或者打折&#xff0c;是阿里云的一种重要优惠方式。本文将为大家详细介绍阿里云优惠券的免费领取方法及使用教程&#xff0c;帮助大家在购买阿里云产品…

qt 读取txt文本内容时,中文乱码

项目场景&#xff1a; 项目中&#xff0c;需要在TF卡中做类似txt阅读器的功能&#xff0c;因为app是在嵌入式系统下运行的&#xff0c;发现当读取txt的文本格式为ANSI时&#xff0c;中文的显示是乱码&#xff0c;故记录下解决方法 问题解决 中文乱码问题还是涉及到编码问题&…

Steam通过短信验证来遏制带有恶意软件的更新

导语段落 近期&#xff0c;Steam平台上的游戏开发者账户遭受了来自恶意软件的更新攻击&#xff0c;为了应对这一问题&#xff0c;Valve公司宣布将实施额外的安全措施&#xff0c;其中包括基于短信的确认码验证。本文将为大家介绍这一新措施以及其对游戏开发者和玩家的影响。 短…

ORA-12541:TNS:no listener 无监听程序

问题截图 解决方法 1、删除Listener 新建一个新的 2、主机为服务器ip 3、设置数据库环境 只需要设置实例名不需要设置路径 4、服务命名 一样设置为ip 服务名与监听名一直 eg&#xff1a;orcl

React中的key有什么作用

一、是什么 首先&#xff0c;先给出react组件中进行列表渲染的一个示例&#xff1a; const data [{ id: 0, name: abc },{ id: 1, name: def },{ id: 2, name: ghi },{ id: 3, name: jkl } ];const ListItem (props) > {return <li>{props.name}</li>; };co…

Windows窗口过程

一、窗口类&#xff08;WNDCLASS&#xff09; 定义&#xff1a;窗口类是一个属性集&#xff0c;是Windows编程中用于创建窗口的模板。窗口类包含了窗口的各种信息的数据结构&#xff0c;每个窗口都具有窗口类&#xff0c;每个窗口都是基于自己的窗口类来进行创建窗口的。每一个…

【前端】Js

目 录 一.前置知识第一个程序JavaScript 的书写形式注释输入输出 二.语法概览变量的使用理解 动态类型基本数据类型 三.运算符算术运算符赋值运算符 & 复合赋值运算符自增自减运算符比较运算符逻辑运算符位运算移位运算 四.条件语句if 语句三元表达式switch 五.循环语句whi…