day23 JDBC(Java Database Connection)连接 与 通配符与插入返回主键
JDBC配置connector的jar包
1.项目下新建lib文件夹
2.将mysql-connector-java-版本号.jar复制到lib目录下
3.右键项目名,选择Properties选项
4.点击Add JARS...,选中刚复制的jar包后,点击Apply=》OK
连接数据库
连接的过程
1)加载驱动
2)创建连接对象
3)创建执行对象
4)执行sql语句
5)处理返回结果
6)关闭访问资源
public class JdbcDemo01{
public static final String URL = "jdbc:mysql://localhost:3306/situ001?serverTimezone=UTC&useSSL=false";//&useSSL=false可不加,serverTimezone=UTC表示时区
public static final String USER = "root";
public static final String PASS = "123456";
static Connection conn = null;
static PrepareStatement ps = null;
static ResultSet rs = null;
//建立数据库连接
public static void init(){
try{
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//建立连接
conn = DriverManager.getConnection(URL,USER,PASS);
System.out.println("建立连接成功");
}catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
//查询
public static void query(String sql){
init();
try{
ps = conn.prepareStatement(sql);
rs = ps.excuteQuery(sql);
while(rs.next()){
System.out.println(rs.getInt("id")+","+rs.getString("s_name"));
}
}catch (SQLException e) {
e.printStackTrace();
}finally{
close();
}
}
//修改表(增删改)
public static void excute(String sql){
init();
try{
ps = conn.prepareStatement(sql);
int rows = ps.excuteUpdate(sql);
if(rows == 0) System.out.println("没有改变表中的记录");
System.out.println("修改成功");
}catch (SQLException e) {
e.printStackTrace();
}finally{
close();
}
//添加一条数据同时返回其主键
public static Integer addReturnPK(String sql){
init();
try{
ps = conn.prepareStatement(sql,ps.RETURN_GENERATED_KEYS);
int rows = ps.excuteUpdate();
if(rows == 0) return null;
Result rs2 = ps.getGeneratedKeys();
Integer id = null;
while(rs2.next()){
id = rs2.getInt(1);
}
return id;
}catch (SQLException e) {
e.printStackTrace();
return null;
}finally{
close();
}
}
//关闭连接
public static void close(){
try {
if(rs != null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(ps != null) ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
//测试查询方法
String sql = "select*from student";
}
}
查询 和 增删改方法的优化(输入参数)
public static void excute(String sql, String name, Integer age){
init();
try {
ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setInt(2, age);
int rows = ps.executeUpdate();
if (rows >0) {
System.out.println("执行成功");
}else{
System.out.println("没有影响记录");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("执行失败");
}finally {
close();
}
}
public static void query(String sql, Integer id,String name){
init();
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.setString(2, name);
rs = ps.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("id")+","+rs.getString("s_name"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
close();
}
}
day23 JDBC(Java Database Connection)连接 与 通配符与插入返回主键的更多相关文章
- [19/05/06-星期一] JDBC(Java DataBase Connectivity,java数据库连接)_基本知识
一.概念 JDBC(Java Database Connectivity)为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成.是java程序与数据库系统通信的标准API. J ...
- JDBC(Java Database Connectivity,Java数据库连接)API是一个标准SQL(Structured Query Language
JDBC(Java Database Connectivity,Java数据库连接)API是一个标准SQL(Structured Query Language,结构化查询语言)数据库访问接口,它使数据 ...
- jdbc、Mybatis插入数据主键回显的实现方法
插入数据的时候,往往需要获取主键值.但是有时候主键是自增长的那么,就不太适用手动添加主键值了,此时需要一种可以回显主键参数的方法, 下面以jdbc.mybatis的实现举例 此时使用的是jdbc的话或 ...
- JDBC 返回主键
转载至:https://www.liyongzhen.com/ 上一节课里我们学习通过PreparedStatement对象执行带参数的查询SQL和修改SQL. 这节课我们学习使用 PreparedS ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- Java MyBatis insert数据库数据后返回主键
<selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER&quo ...
- Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了
insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xi ...
- JDBC (Java DataBase Connectivity)数据库连接池原理解析与实现
一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大 ...
- [19/05/07-星期二] JDBC(Java DataBase Connectivity)_CLOB(存储大量的文本数据)与BLOB(存储大量的二进制数据)
一. CLOB(Character Large Object ) – 用于存储大量的文本数据 – 大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式来处理的.而非一般的字段,一次 ...
- [19/05/08-星期三] JDBC(Java DataBase Connectivity)_ORM(Object Relationship Mapping, 对象关系映射)
一.概念 基本思想: – 表结构跟类对应: 表中字段和类的属性对应:表中记录和对象对应: – 让javabean的属性名和类型尽量和数据库保持一致! – 一条记录对应一个对象.将这些查询到的对象放到容 ...
随机推荐
- std:move() 作用 和 移动语义后 右值行为,unique_ptr的"移动"操作问题
unique_ptr 不能进行赋值操作,但是可以有返回unique_ptr的函数,由此产生的问题: 结论1:std:move() 只是将一个实参强行转换为右值引用. 我们知道对象初始化时有 构造函数, ...
- 使用ingress-nginx
文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247496824&idx=1&sn=cd845d77 ...
- 使用filebeat过滤掉部分字段
host,agent,ecs三个字段也是不让drop的 processors: - drop_fields: fields: ["log","input",&q ...
- jumpserver堡垒机版本升级,从2.14.2升级到2.16.3
官方文档:https://docs.jumpserver.org/zh/master/install/upgrade/upgrade/ 前提说明 1.堡垒机是单节点 2.使用外置MySQL和Redis ...
- Portainer 基本功能介紹之升級映像檔並更新 Container
文档地址:https://www.asustor.com/zh-tw/online/College_topic?topic=145#dpt7
- 使用prometheus + granafa 监控mysql主从
若主从同步数据库未同步默认的mysql表,则也需要在从库上创建mysql用户mysqld_exporter用来收集监控数据 mysqld_exporter安装部署 这里采取的是mysqld_expor ...
- 【golang】json数据解析 - 嵌套json解析
@ 目录 1. 通过结构体映射解析 2. 嵌套json解析-map 1. 通过结构体映射解析 原数据结构 解析 // 结构体 type contractJson struct { Data []tra ...
- HTML5中新增实用的标签
1:progress 进度条 <h3>progress</h3> <progress value="75" max="100"& ...
- 记Windows的一个存在了十多年的bug
bug Windows有一个bug,持续了十多年,从Windows Visita开始(2007年),一直存在,直到Windows11(2021年)才修复(其实也不叫修复,后面我再具体说),而Windo ...
- 关于pwd命令小技巧-确认当前工作目录的绝对路径中是否包含软链接目录名
Linux中任何一个命令,当你用心研究到深处时,也许总能有着新的发现或者有趣的用途,如下方的pwd命令 对于pwd命令,大家都知道是用于打印当前的工作目录路径,而且是绝对路径 pwd命令两个选项的,默 ...