JAVA 高级特性 JDBC
数据持久化技术:
常见JDBC组件。
数据库操作 :


PreparedStatement操作数据库
executeQuery:
execute:
package com.project.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
import java.sql.CallableStatement;
public class JdbcDemo {
private static final String url = "jdbc:mysql://localhost:3306/test";
private static final String userName = "root";
private static final String passWord = "";
//初始化驱动,静态代码块
static {
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
JdbcDemo demo = new JdbcDemo();
// 创建一个 Connection 连接对象 通过一个连接对象操作数据库,一个连接多个操作
Connection con = JdbcDemo.getcon();
//demo.updateprepareDemo(con);
demo.callableDemo(con);
demo.selectDemo(con);
JdbcDemo.closeDemo(con);
}
//调用存储过程
public void callableDemo(Connection con){
//准备SQL
String SQL ="{CALL test(?,?,?,?)}";
//创建连接状态
try {
CallableStatement state = con.prepareCall(SQL);
//设置参数
state.setString(1, "LIDAHU");
state.setInt(2, 23);
state.setString(3, "man");
state.registerOutParameter(4, java.sql.Types.INTEGER);
//执行SQL
state.execute();
//处理结果
//获取参数
int result = state.getInt(4);
if (result==1){
System.out.println("注册成功!");
}else {
System.out.println("注册失败!");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//利用预编译preparedstatement进行更新操作
public void updateprepareDemo(Connection con) {
// 准备SQL语句
// String SQL1 = "INSERT INTO student(id,name,age,sex) VALUES(8,'YANGWU',18,'woman')";
// String SQL2 = "DELETE FROM student WHERE id=1";
// 提交数据库的对象
PreparedStatement state = null;
Scanner sc = new Scanner(System.in);
System.out.println("请输入修改的姓名 :");
String name = sc.nextLine();
System.out.println("请输入年龄 : ");
int age = sc.nextInt();
//关闭自动提交 , 事务不会实现数据持久化,即不会写入到数据库里面
try {
con.setAutoCommit(false);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String SQL3 = "UPDATE student SET name=? WHERE age=?";
System.out.println(SQL3);
//获取状态
try {
state = con.prepareStatement(SQL3);
//设置参数, SQL语句里面的 ? 按照顺序。
state.setString(1, name);
state.setInt(2,age);
//executeUpdate 返回一个执行影响行数的int 提交SQL语句,执行SQL
int set = state.executeUpdate();
//处理执行结果
if (set > 0) {
//结束事务 , 数据上传到数据库, 实现持久化
con.commit();
System.out.println("执行成功: " + set + "行");
}else {
//让其回滚。
con.rollback();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//更新SQL 操作
@SuppressWarnings("unused")
public void updateDemo(Connection con) {
// 准备SQL语句
String SQL1 = "INSERT INTO student(id,name,age,sex) VALUES(8,'YANGWU',18,'woman')";
String SQL2 = "DELETE FROM student WHERE id=1";
String SQL3 = "UPDATE student SET name='NIHAO' WHERE id = 1";
// 提交数据库的对象
Statement state = null;
try {
state = con.createStatement();
//executeUpdate 返回一个执行行数的int
int set = state.executeUpdate(SQL1);
System.out.println(set);
if (set > 0) {
System.out.println("执行成功: " + set + "行");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//获取连接对象
public static Connection getcon(){
Connection con = null;
try {
// 获取数据库连接
con = DriverManager.getConnection(url, userName, passWord);
} catch (Exception e) {
// TODO: handle exception
}
return con;
} // 查询方法
public void selectDemo(Connection con) {
// 步骤:
// 创建提交对象,,结果集对象
Statement state = null;
ResultSet set = null;
// 准备SQL语句
String sql = "select * from student";
// 执行SQL语句
// 创建提交数据库的连接
try {
// 连接对象 ,执行executeQuery查询命令,并保存到结果集set里面
state = con.createStatement();
set = state.executeQuery(sql);
// 处理结果集(对set 结果集进行遍历操作)
// next(); 切换到下一条目标数据,如果存在下一条数据则返回true ,否则返回false
while (set.next()) {
// 每次循环操作一条结果
int id = set.getInt("id");
String name = set.getString("name");
String sex = set.getString("sex");
int age = set.getInt("age");
System.out.println(id + " " + name + " " + sex + " " + age+ ";");
} } catch (Exception e) {
e.printStackTrace();
}finally{
try {
state.close();
set.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
public static void closeDemo(Connection con) {
// 关闭数据库连接
// 处理异常
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
JAVA 高级特性 JDBC的更多相关文章
- java高级特性增强
第4天 java高级特性增强 今天内容安排: 1.掌握多线程 2.掌握并发包下的队列 3.了解JMS 4.掌握JVM技术 5.掌握反射和动态代理 java多线程增强 .1. java多线程基本知识 . ...
- paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型
paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...
- Java高级特性-String、StringBuffer和StringBuilder
Java高级特性-String.StringBuffer和StringBuilder String Java语言中的字符串值都属于String类,虽然有其他方法表示字符串(如字符串数组),但Java一 ...
- Java高级特性——反射机制(第二篇)
在Java高级特性——反射机制(第一篇)中,写了很多反射的实例,可能对于Class的了解还是有点迷糊,那么我们试着从内存角度去分析一下. Java内存 从上图可以看出,Java将内存分为堆.栈.方法区 ...
- Java高级特性1_流库_初体验
Java高级特性流库_初体验 面对结果编程 在编程里, 有两种编程方式, 一种是面对过程编程, 一种是面对结果编程. 两者区别如下 面向过程编程 面向过程编程需要编程程序让程序依次执行得到自己想要的结 ...
- 云端卫士实战录 | Java高级特性之多线程
<实战录>导语 一转眼作为一名Java开发者已经四年多时间了,说长不长说短不短,对于java的感情还是比较深的,主要嘛毕竟它给了我饭吃.哈哈,开个玩笑.今天我想借此机会来和大家聊聊Java ...
- Java高级特性之泛型
首先我们先提出两个问题: 什么是泛型? 为什么要使用泛型?我们先来看看第一个问题什么是泛型.如果你对Java三大特性中的多态性理解的比较透彻的话,泛型就比较好理解了.多态性表示一个对象具备多种状态.比 ...
- Java高级特性—并发包
1). java并发包介绍 JDK5.0 以后的版本都引入了高级并发特性,大多数的特性在java.util.concurrent 包中,是专门用于多线程发编程的, 主要包含原子量.并发集合.同步器.可 ...
- Java高级特性——注解,这也许是最简单易懂的文章了
最近,浪尖在做flink的项目时source和sink的绑定那块用到了注解,当然新版本1.6以后就变为server load的方式加载. 但是浪尖也是觉得很有毕业讲一下注解,毕竟高级免试也会问答的吧. ...
随机推荐
- MySQL运行计划不准确 -概述
为毛 MySQL优化器的运行计划 好多时候都不准确,不是最优的呢(cpu+io)??? 因素太多了:: 存在information_schema的信息是定期刷新上去的,好多时候不是最真的,甚至相差好大 ...
- 目标跟踪之高斯混合模型---cv实现
#include <stdio.h>#include <cv.h>#include <cxcore.h>#include <highgui.h>#inc ...
- 关于mybatis的 insert into select 命令未结束问题
关于mybatis的 insert into select 命令未结束问题,最后以为是sql写错了,可是,在plsql运行又没问题.最后还是解决这个问题. 是设置问题. ### Cause: java ...
- IOS开发基础之—MD5加密算法【转】
原文地址:http://blog.csdn.net/pjk1129/article/details/6855024 #import <CommonCrypto/CommonDigest.h> ...
- myecplise、ecplise项目空间优化
1.代码自动提示补全 Window->preferences->Java->Editor->Content Assist 再右下角Auto activation trigger ...
- PyTorch 60 分钟入门教程:PyTorch 深度学习官方入门中文教程
什么是 PyTorch? PyTorch 是一个基于 Python 的科学计算包,主要定位两类人群: NumPy 的替代品,可以利用 GPU 的性能进行计算. 深度学习研究平台拥有足够的灵活性和速度 ...
- HDU1151 Air Raid —— 最小路径覆盖
题目链接:https://vjudge.net/problem/HDU-1151 Air Raid Time Limit: 2000/1000 MS (Java/Others) Memory L ...
- ubuntu删除ppa源
cd /etc/apt/sources.list.d 都在这里了 drwxr-xr-x 2 root root 4096 5月 22 23:41 ./ drwxr-xr-x 6 root root 4 ...
- C# Stopwatch
问题一:前几天写并行计算的实际应用——通讯录的时候,用到了stopwatch来计时,发现这个计时是真正的计时. Stopwatch stopwatch = new Stopwatch(); TimeS ...
- mac系统下安装mysql步骤
1.下载mysql-5.7.13-osx10.11-x86_64.dmg安装包,并点击dmg安装包进行安装 2.安装完成后弹出如以下提示信息: 2016-06-23T01:14:48.649253Z ...
mysql-connector-java-5.1.38-b...