java如何连接数据库并对其操作(以PostgreSQL为例)
java如何连接数据库并对其操作(以PostgreSQL为例)
相关概念
JDBC(Java Data Base Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它是一组用java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序
数据库驱动:我们安装好数据之后,我们的应用程序不能直接使用数据库,必须通过相应的数据库驱动程序,通过驱动程序去和数据库打交道。其实也就是数据厂商的JDBC接口实现,即对connection等接口的实现类的jar文件常用接口
- Driver接口
Driver接口由数据库厂家提供,作为java开发人员,只需要使用Driver接口就可以了。在编程中要连接数据库,必须先装载特定的数据库驱动程序,以PostgreSQL驱动装载为例:
Class.forName("org.postgresql.Driver");
- Connection接口
Connection与特定数据库的连接(会话),在连接上下文中执行sql语句并返回结果,DriverManager.getConnection(url,user,password)方法建立在JDBC URL中定义的数据库Connection连接上,以连接PostgreSQL为例:
Connection connection=DriverManager.getConnection("jdbc:postgresql://172.16.55.190:5432/thingsboard",user,password);(设置自己的ip地址,端口号,thingsboard为数据库名称)
- Statement接口
用于执行静态sql语句并返回它所生结果的对象
三种Statement类:
- Statement:由CreateStatement创建,用于发送简单的SQL语句
- PreparedStatement:可以防止sql注入
- CallableStatement:
常用Statement方法:
- execute(String sql):运行语句,返回是否有结果集
- executeQuery(String sql):运行select语句,返回ResultSet结果集
- executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数
- ResultSet接口
ResultSet提供检索不同类型字段的方法,常用有:getString(int index/String columnName),getFloat(int index/String columnName),getBoolean(int index/String columnName),getObject(int index/String columnName)--获取数据库中任意类型的数据
ResultSet还提供了对结果进行滚动的方法:
- next();移动到下一行
- Previous();移动到前一行
- absolute(int row);移动到指定行
- beforeFirst();移动到最前面
- afterLast();移动到最后面
- Driver接口
####实现步骤:
+ 下载驱动(jar包)
驱动的下载地址:[jar包](https://jdbc.postgresql.org/download.html)
+ eclipse导入jar包
右键点击创建的项目新建文件夹,文件夹命名为“lib",将下载的jar包复制到lib文件夹中,右键点击导入的jar包,找到构建路径,点击添加构建路径
+ 实现代码:
```
package Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class SelectTest {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
try {
String url = "jdbc:postgresql://172.16.55.190:5432/thingsboard";//换成自己PostgreSQL数据库实例所在的ip地址,并设置自己的端口
String user = "postgres";
String password = "123456"; //在这里我的密码为空,读者可以自己选择是否设置密码
Class.forName("org.postgresql.Driver");
connection= DriverManager.getConnection(url, user, password);
//System.out.println("是否成功连接pg数据库"+connection);
String sql ="select * from public.syuser";
statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
//取出列值
String id = resultSet.getString(2);
String name = resultSet.getString(8);
System.out.println(id+"\t\t"+name);
}
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
###语句解析:
> String url = "jdbc:postgresql://172.16.55.190:5432/thingsboard";
jdbc:协议 postgresql:子协议 172.16.55.190:主机 5432:端口 thingsboard:数据库
创建执行语句的statement
String sql="insert into user(name,pwd) values(?,?)";
PrearedStatement ps = conn.preparedStatement(sql);
ps.setString(1,"col_value");//占位符从第一位开始
ps.setString(2,"123435")
ps.executeQuery();
处理执行结果的ResultSet
ResultSet rs=ps.executeQuery();
While(rs.next()){
rs.getString("col_name");
rs.getInt(1);
}
释放资源
resultSet.close();
statement.close();
connection.close();
[常用Sql语句查询](https://www.yiibai.com/html/postgresql/2013/080442.html)
本博客部分内容参考自https://www.cnblogs.com/erbing/p/5805727.html
java如何连接数据库并对其操作(以PostgreSQL为例)的更多相关文章
- Java通过JDBC 进行MySQL数据库操作
转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...
- 【Mybatis源码解析】- JDBC连接数据库的原理和操作
JDBC连接数据库的原理和操作 JDBC即Java DataBase Connectivity,java数据库连接:JDBC 提供的API可以让JAVA通过API方式访问关系型数据库,执行SQL语句, ...
- Java实现单链表的各种操作
Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素 4.实现链表的反转 5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...
- Java Servlet(七):JavaWeb MVC 操作(jdk7+tomcat7+eclipse)
之前一段时间一直忙于毕业设计,也没有空学习了,本篇继续学习. 本篇将开始学习java web下使用servlet下来操作数据库,并展示到界面上的使用方法. 新建工程ServletMvc001. 目录结 ...
- Java 字符流实现文件读写操作(FileReader-FileWriter)
Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...
- Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作
在Java中对Oracle数据库的操作分为两种:一.查询.二.非查询. 下面是我对其进行总结: 一.查询数据 /** * 根据用户代码查询 * @param userId * @return 如果存在 ...
- 【小白的java成长系列】——java ide 开发工具eclipse的操作
今天看了一下自己的博客文章,里面的内容还是比較杂的,有好多技术,有好多语言,都没有突出自己的强项,能够说,从博客里面,看不出我究竟是做哪块的..加上今天被授予了博客准专家勋章,自己想了一下,还是得梳理 ...
- Java进阶(三十九)Java集合类的排序,查找,替换操作
Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...
- 有关java的引用传递,直接操作对象本身。直接删除BE的value中某值
HashSet<String> refRegions = BE.get(regionName); HashSet<String> values = new HashSet ...
随机推荐
- day31——recv工作原理、高大上版解决粘包方式、基于UDP协议的socket通信
day31 recv工作原理 源码解释: Receive up to buffersize bytes from the socket. 接收来自socket缓冲区的字节数据, For the opt ...
- Android手机的分区以及一些刷机术语的了解
最早以前的手机基本都是下载一个刷机软件(像刷机精灵.刷机大师),一键root,一键刷机,这就以前的傻瓜式刷机,至少我在高中(2015年开始接触)的时候也是这么干的.那时候,好像有种手机开机界面会出现“ ...
- Unity3D 跨平台原理
Unity3D的跨平台原理核心在于对指令集CIL(通用中间语言)的应用. 机理 首先需要知道,Unity中的Mono是基于 通用语言架构(Common Language Infrastructure, ...
- C#特性的学习(一)
1.预定定义特性之一:AttributeUsage AttributeUsage有三个属性: 第一个属性:ValidOn 规定特性可被放置的语言元素,默认是AttributeTargets.All.
- gitlab用户登录与AD域用户集成
---恢复内容开始--- 编辑gitlab.rb文件 sudo vi /etc/gitlab/gitlab.rb 下图是我编辑的内容示例(仅供参考): 编辑以下内容: gitlab_rails['ld ...
- MyBatis 中#和$符号的区别
#相当于对数据 加上 双引号,$相当于直接显示数据 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sq ...
- SpringBoot中resources配置文件application.properties
#项目名server.servlet.context-path=/springboot-day1#端口号server.port=8989 #datasource数据库连接信息#urlspring.da ...
- 二叉树、B树、B+树、B*树、VAL树、红黑树
二叉搜索树 每个节点只存储一个关键字, 每个节点最多有两个子节点, 左子节点存储的关键字小于本节点存储的关键字 右子节点存储的关键字大于本节点存储的关键字 搜索时,从根节点开始搜索,小于走左结点,大于 ...
- Django:母版、继承、组件、自定义标签
1.for循环应用 1.1for Variable Description forloop.counter 当前循环的索引值(从1开始) forloop.counter0 当前循环的索引值(从0开始) ...
- React 中的 定义组件的 两种方式
React 中创建 Components 的方式有两种:Function and Class 定义一个组件最简单的方法就是写一个 JavaScript 函数 function Welcome(prop ...