[1]创建table

-- Create accounts , use test jdbc-demo project
create table ACCOUNTS
(accountno   NUMBER(10) not null,accountname VARCHAR2(30),password    VARCHAR2(11),balance     NUMBER(10,2),opendate    DATE
);
-- Add comments to the table
comment on table ACCOUNTS is 'jdbc 测试-账户信息表';
-- Add comments to the columns
comment on column ACCOUNTS.accountno  is '账户编码';
comment on column ACCOUNTS.accountname  is '账户名称';
comment on column ACCOUNTS.password  is '账户密码';
comment on column ACCOUNTS.balance  is '账户余额';
comment on column ACCOUNTS.opendate  is '账户开户时间';
-- Create/Recreate primary, unique and foreign key constraints
alter table ACCOUNTS add constraint ACCOUNTNO primary key (ACCOUNTNO);
--------------------------------------------------------------------
-- Create sequence
create sequence SEQ_ACCOUNT
minvalue 1
maxvalue 10000
start with 1
increment by 1
cache 20;

[2]使用jdbc连接Oracle数据库并测试DML操作

package cn.net.trimmer.jdbc.test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;/*** jdbc连接Oracle数据库并测试DML操作* * @author wl**/
public class TestDML {public static void main(String[] args) throws Exception {// 1 加载驱动Class.forName("oracle.jdbc.OracleDriver");// 2 创建连接String url = "jdbc:oracle:thin:@192.168.230.10:1521:orcl";Connection conn = DriverManager.getConnection(url, "username", "password");// 3 创建statment(声明对象)Statement statement = conn.createStatement();// 4 发送sql并接收执行结果String sql = "insert into accounts values(seq_account.nextval,'易小川','123456',80000)";int row = statement.executeUpdate(sql);// 5 处理sql执行结果System.out.println("共插入成功" + row + "行!");// 6关闭资源if (statement != null) statement.close();if (conn != null) conn.close();}
}

[3]使用jdbc连接Oracle数据库并测试DQL操作

package cn.net.trimmer.jdbc.test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;/*** jdbc连接Oracle数据库并测试DQL操作* * @author wl**/
public class TestDQL {public static void main(String[] args) throws Exception {// 1 加载驱动Class.forName("oracle.jdbc.OracleDriver");// 2 创建连接String url = "jdbc:oracle:thin:@192.168.230.10:1521:orcl";Connection conn = DriverManager.getConnection(url, "username", "password");// 3 创建statment(声明对象)Statement statement = conn.createStatement();// 4 发送sql并接收执行结果String sql = "select accountno,accountname,password,balance from accounts";ResultSet rs = statement.executeQuery(sql);// 5 处理sql执行结果while (rs.next()) {String accountNo = rs.getString("accountno");String accountName = rs.getString(2);String password = rs.getString("password");Double balance = rs.getDouble("balance");System.out.println(accountNo + "," + accountName + "," + password + "," + balance);}// 6关闭资源if (rs != null) rs.close();if (statement != null) statement.close();if (conn != null) conn.close();}
}

[4]使用prepareStatement 解决sql执行过程中的sql注入问题

package cn.net.trimmer.jdbc.test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Date;/*** 测试使用prepareStatement 解决sql执行过程中的sql注入问题* * @author wl**/
public class TestDMLParam {public static void main(String[] args) throws Exception {// 模拟参数 金毛'狮王有注入问题,但是在后续处理后可以直接插入到数据库String accountName = "金毛'狮王";String password = "123456";Double balance = 1234.0;Date date = new java.util.Date();java.sql.Date account_date = new java.sql.Date(date.getTime());// 1.加载驱动Class.forName("oracle.jdbc.OracleDriver");// 2.创建连接String url = "jdbc:oracle:thin:@192.168.230.10:1521:orcl";Connection conn = DriverManager.getConnection(url, "username", "password");// 3.创建pstm,占位符形式的sql操作对象,可避免sql注入问题String sql = "insert into accounts values(seq_account.nextval,?,?,?,?)";PreparedStatement pstm = conn.prepareStatement(sql);// 4.先给占位符赋值,再发送sql并接收执行结果pstm.setString(1, accountName);pstm.setString(2, password);pstm.setDouble(3, balance);pstm.setDate(4, account_date);int row = pstm.executeUpdate();// 5.处理操作结果System.out.println(row);// 6.关闭资源if (pstm != null) { pstm.close();}if (conn != null) {conn.close();}}
}

[5]demo下载地址

 https://github.com/wanglei199809/jdbc-demo1.git

jdbc入门到精通1.1访问数据库实战相关推荐

  1. 《网络安全入门到精通》- 3.1 - 数据库 - MySQL数据库

    「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「订阅专栏」:此文章已录入专栏<网络安全入门到精通> MySQL数据库 一.环境准备 1. My ...

  2. ORACLE系列之SQL从入门到精通(全面把控数据库基础)

    2019独角兽企业重金招聘Python工程师标准>>> 学习目标:                 1.了解设计数据库的步骤                2.掌握如何绘制数据库的E ...

  3. Java小白修炼手册--第四阶段--JDBC(Java Database Connectivity : Java访问数据库的解决方案 )

    目录 JDBC原理 JDBC标准 JDBC是什么 使用JDBC优点 JDBC接 口及数据库厂商实现 ​JDBC工作原理 Driver ( 驱动程序)接口及驱动类加载 ​Connection( 连接,关 ...

  4. 尚观oracle 老师,尚观Oracle入门到精通视频教程的资料详细介绍

    Oracle由于其良好的数据安全性和稳定性,在数据库领域一直处于领先地位.<尚观Oracle入门到精通视频教程>针对数据库开发人员设计,从零开始对Oracle进行介绍.除了基本的SQL语法 ...

  5. 分布式数据集训营,从入门到精通,从理论到实践,你不可错过的精品课程!...

    责编 | Carol 出品 | CSDN云计算(ID:CSDNcloud) 随着微服务.云化架构的兴起,分布式数据库开始在越来越多的场景得到应用,从外围系统到中台业务,再到核心交易业务,分布式数据库成 ...

  6. MySQL从入门到精通:多表查询的灵活运用_02

    我是 ABin-阿斌:写一生代码,创一世佳话,筑一揽芳华. 如果小伙伴们觉得我的文章有点 feel ,那就点个赞再走哦. 上一篇:MySQL从入门到精通:基本语法介绍与使用_01 下一篇:MySQL从 ...

  7. 详解-程序是如何访问数据库的?

    ​ ​ 最近我们项目中引入了时序数据库TDengine,所以可以访问的数据库需要配置两个,并且在不同的时机访问不同的数据库,在配置多数据源的过程中,我想了很多问题,花费了一部分精力将数据库访问的原理彻 ...

  8. java从入门到精通_Java大数据:数据库开发从入门到精通

    在Java大数据开发任务当中,数据存储是非常关键的一环,涉及到分布式文件系统.分布式数据库,数据库是后端系统当中支持数据存储的重要组件.今天我们就来聊聊Java大数据,数据库开发从入门到精通,应该如何 ...

  9. Java大数据:数据库开发从入门到精通

    在Java大数据开发任务当中,数据存储是非常关键的一环,涉及到分布式文件系统.分布式数据库,数据库是后端系统当中支持数据存储的重要组件.今天我们就来聊聊Java大数据,数据库开发从入门到精通,应该如何 ...

最新文章

  1. StereoDRNet:基于stereo的三维重建网络
  2. 有查看自己dian nao mi |W| ma 的软件
  3. 十张图解释机器学习的基本概念
  4. BZOJ2837 : 小强的形状
  5. oracle 更新记录语句,Oracle语句自动判断是要更新记录还是要插入记录
  6. php中正侧表达式_PHP中正则表达式详解(代码实例)
  7. 【软件工程实践 · 团队项目】 第二次作业
  8. 高效能人士的七个习惯——习惯一:积极主动
  9. Python 格式化输出详解
  10. 最好的Linux文件管理器,适用于 Linux 用户的 10 款优秀且免费的文件管理器
  11. iphone铃声android铃声,iphone12如何设置铃声?iphone12更换铃声方式分享[多图]
  12. 《弃子长安》第十一章 一路向西
  13. 展讯6500平台架构
  14. java内部类继承类_java内部类基础(内部类继承关系 或外部类整体继承)
  15. 【Linux、进程隐藏】在Linux环境下添加系统调用实现进程隐藏
  16. 嵌入式Linux学习经典书籍-学完你就是高手
  17. 【SQL】cumt 数据库平台实践
  18. Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer(阅读报告)
  19. 自学DAMA-DMBOK2之对Zachman企业架构框架的解读分享
  20. 电脑的发展史和趣闻,伟大的乔布斯和比尔盖茨

热门文章

  1. 检测心电信号的p波的matlab代码,matlab心电信号R波检测程序.doc
  2. 1.1 Android 系统概述_智能手机系统介绍
  3. 线性代数几何意义-矩阵乘法、行列式
  4. android ios 重力感应器,iOS实时获取当前的屏幕方向之重力感应
  5. 【NOIP2017提高A组模拟8.25】夜莺与玫瑰
  6. 【问链-EOS公开课】第十五课 用cleos注册EOS主网账户、投票和发币
  7. 关于office 2013 word 中使用微软IME首字母无法输入的问题
  8. hihocoder王胖浩与三角形【海伦公式+分类讨论】
  9. 提高QPS方法基本思路
  10. CDA1级习题复习(2)