oracle学习笔记(2)

1、事务处理
   1)事务和锁
          当执行事务操作时(dml语句),oracle 会在被作用的表上加锁,防止其他用户改表的结构,只有当一个事务执行完了
      锁解开了,其他用户才可以对这个表进行操作,这对于用户来说十分重要,避免同时操作同一个表。
   2)回退事务
          保存点(savepoint)是事务中的一点,用于取消部分事务,当结束事务后,会自动的删除该事务所定义的所有保存点。
      当执行rollback时,通过指定保存点可以回退到指定的点,这对于操作人员来说作用十分大,因为当数据出错时,可以采用
      回退事务,恢复到指定的状态。
          设置保存点: savepoint a1; 回滚到指定的保存点:rollback to a1;  取消所有事务:rollback
   3) 提交事务
          当执行commit语句可以提交事务,当执行了commit语句后,会确认事务的变化、结束事务、删除保存点、释放锁,
      当使用commit语句结束事务之后,其他会话将可以查看到事务变化后的新数据。
   4) 只读事务
          当只读事务开启后,查看的数据将不再显示后来更新的数据。这种事务在进行数据统计时最常用,这样可以避免统计期间,
      后来更新的数据对统计结果的干扰。
          设置只读事务:set transaction read only

2、java操作数据库

    1)采用jdbc_odbc桥接方式,这个采用的是系统内置的驱动,不需要另外导入驱动包。

         装载驱动类:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

         连接url:  jdbc:odbc:DStest,其中DSTest为自己在本地配置的数据源。

         创建数据源方法如下:

         (1) 打开控制面版,选择管理工具

           
             

         (2)选择数据源

                  
              

         (3)选择添加按钮

               
           

      (4)在安装oracle的时候,系统自动注册了oracle数据源,点击oracle in OraHome92
           

 

      (5)Data Source Name:随便取一个,Description:可以不填,TNS Service Name :点击下拉框,

           选择安装数据库时,创建的数据库实例。

           信息填完后,可以点击Test Connection 按钮测试是否链接成功。

           
         
      (6)java操作代码

         

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class test {
	public static void main(String[] args) {
         try{
        	 
        	 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        	 Connection conn=DriverManager.getConnection("jdbc:odbc:DStest","scott","netjava");
        	 Statement st=conn.createStatement();
        	 ResultSet set=st.executeQuery("select * from emp");
        	 while(set.next()){
        		 System.out.println("用户名:"+set.getString("ename"));	 
        	 }
         }catch (Exception e) {
        	 e.printStackTrace();
         }
	}
}

     (7) 执行结果

       
      

 

 

   2)采用jdbc方式,这个需要导入oracle驱动包。

        驱动类:Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

        连接url:  jdbc:oracle:thin:@localhost:1521:oracle

       

   3)举例说明使用事务的必要性,比如在银行的转账系统中,从一个用户的余额中减去1000元,在另外一个用户增加

        1000员,如果执行减法的语句执行成功,而执行加法的语句没有成功的话,那么意味着用户的钱凭空消失了,或者

        反过来,那么银行就亏大了,这样的事情在现实生活中肯定是不可以让他发生的。要解决这样的问题,那么就得用到

        事务处理机制,开启事务后,所有的sql语句,要么全部成功,要么全部失败。

   4)采用jdbc来执行事务处理实现

        java代码:

       

package com.champion.oracle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * 连接oracle操作
 * 
 * @author: 通信0905--沈冠军
 * @time: 2011-5-7
 */
public class Conn2Oracle {

	public static void main(String[] args) {
		try {
			// 创建驱动
			Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
			// 用户名和密码
			String userName = "scott";
			String password = "netjava";
			// 数据库连接url
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:oracle";
			// 取得连接
			Connection conn = DriverManager.getConnection(url, userName,
					password);
			// (1)设置自动提交为false,默认的为没执行一句sql,就提交一次
			conn.setAutoCommit(false);
			// 创建预编译对象
			Statement smt = conn.createStatement();
			// (2) 将SCOTT职工的工资减去100元;
			smt.executeUpdate("update emp set sal=sal+100 where ename='SCOTT'");
			// (3)制造一个异常
			int i = 10 / 0;
			// (4)给SMITH职工的工作添加100元
			smt.executeUpdate("update emp set sal=sal-100 where ename='SMITH'");
			// 查询工资
			ResultSet set = smt
					.executeQuery("select ename , sal from emp where ename='SCOTT' or ename='SMITH'");
			//(5)提交事务
			conn.commit();
			while (set.next()) {
				System.out.println("姓名:" + set.getString("ename") + "   工资:"
						+ set.getInt("sal"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

 

      说明:当注释掉(1)(2)(3)(4)(5),即只执行查询语句,查看职工的未修改前的工资,执行结果如下:

      
      
 

             当注释掉 (1)(3)(5),即不执行事务处理,也没有异常,只执行SMITH的工资减少100,SCOTT的工资

             添加100,  则执行的结果如下:
           
 

            当注释掉(1)(5),即不开启事务处理,在两个更新语句之间有一个语句出现异常,执行后抛出异常,

            再注释掉(1)(3)(5) , 执行结果如下:

           
            
          可以看到,由于在两个更新语句之间有个i=10/0的异常抛出,在增加的语句执行成功后,执行i=10/0时,抛出

          异常,程序结束,后面的减少语句执行失败,最终导致了这样的结果。

            

          当全部不注释,即开启事务,程序也有异常,执行的时候抛出异常,再次注释掉(1)(2)(3)(4)(5)

          即只执行查询操作,执行结果如下:

            
         
          可以看到,虽然在执行过程出现了异常,但是两个职工的工资都不变,也就是两个更新语句都执行失败,

           这就是事务的作用,由于第二个语句失败,所以全部语句都失败。

3、总节一下

           用java执行oracle数据库和用java执行mysql数据唯一的区别就是连接url和所用的驱动类不同,同样的,java

     操作其他数据库的原理一样,以前都没有用过事务,对事务的了解不是很多,通过这次的学习,对事务机制有了一的

     了解,也知道哪些场合应该使用事务处理,哪些场合不用,最后的就是没有用过jdbc_odbc来操作,因为这个要置数

     据源,在以前使用的mysql中,没有见过这种类型,所以,知识是很广泛的,只有多看多用多学,才可以拓宽自己视

     野。

 

 

 

 

 

 

 

 

 

 

 

 

 

从手机到自动驾驶:MIPI-CSI2协议演进史与车规级改造要点 本文追溯了MIPI-CSI2协议从智能手机摄像头到自动驾驶核心传感器的演进历程。重点剖析了该协议在车规级改造中面临的严苛挑战,包括物理层稳定性、EMC防护、功能安全与数据可靠性等关键要点,并探讨了其在多传感器融合与高带宽实时传输中的工程实践。 阅读详情

相关推荐

Python声音识别实战:从音频处理到智能分类

本文详细介绍了使用Python进行声音识别的完整实战流程。从音频预处理、特征提取(如MFCC)到构建分类模型(SVM、CNN),并最终实现一个实时环境音分类器。文章以Python为核心工具,结合librosa等库,为开发者提供了从理论到实践的清晰路径,适用于智能家居、工业监测等多种应用场景。

weixin_29064009的博客 325

Oracle11gR2学习笔记汇总

鲁春利的工作笔记,谁说程序员不能有文艺范?2009年的时候接触了Oracle9i,2010年由于工作需要使用了Oracle10g,也专门花时间认真的使用并学习了Oracle11g;造化弄人,同样是由于工作原因没能把知识连贯起来,幸好零星的在把一些内容用word的形式记录了下来,但之后就静静的躺在了我的硬盘上,2015年12月了,北京难得连续的几个蓝天,于是准备将这些内容从硬盘...

weixin_34202952的博客 104

Ansys Maxwell磁场仿真入门:无线传能线圈自感与互感计算全流程

本文详细介绍了使用Ansys Maxwell进行无线充电线圈磁场仿真的全流程,包括模型建立、求解器设置、电感参数提取及优化策略。通过实战案例,帮助工程师掌握线圈自感与互感计算技巧,提升无线充电系统设计效率与精度。重点解析了Maxwell在磁场仿真中的关键应用,适用于电磁场仿真初学者和进阶用户。

weixin_29047545的博客 443

ORACLE学习笔记-CentOS 7.2 Oracle 12C R2安装部署

CentOS 7.2 Oracle 12C R2安装部署一、环境检查1、操作系统检查2、内存检查3、SWAP检查4、共享内存检查5、磁盘空间检查二、YUM配置及RPM依赖包安装1、 本地YUM源搭建2、 RPM依赖包安装三、创建组、用户、目录1、创建组、用户2、创建目录四、系统参数配置1、关闭防火墙2、配置/etc/hosts文件3、关闭SELINUX4、配置内核参数5、配置/etc/security/limits.conf6、配置/etc/pam.d/login7、配置/etc/profile9.配置OR

gangma2 3111

WPS占用C盘空间解决方案与优化技巧

办公软件在长期使用过程中会产生大量缓存和历史文件,这些文件往往隐藏在系统目录中,导致磁盘空间被无声占用。以WPS为例,其版本历史备份、云同步缓存和模板库是主要空间占用源。通过分析文件存储机制,可以定位到具体的缓存路径,如AppData目录下的Kingsoft文件夹。针对这一问题,有效的解决方案包括手动清理、自动化脚本和注册表优化。对于需要持续监控的场景,可以结合PowerShell脚本和任务计划实现自动化管理。在实际应用中,这些技术不仅适用于WPS,也可迁移到其他办公软件的空间优化中,是每位IT运维人员和高

weixin_30788239的博客 460

企业数字化转型的 4A 架构指南:从概念解读到 TOGAF 阶段对应

4A企业架构是中国数字化转型实践中总结的简化框架,包含业务、应用、数据和技术四个架构层。它自上而下形成业务驱动应用的指导关系,自下而上构建技术支撑数据的实现路径,与国际标准TOGAF核心内容高度对应。该模型通过统一语言、战略对齐和系统梳理,有效连接业务需求与IT实施,已成为企业架构规划的实用工具。其分层结构清晰展示了从业务目标到技术落地的完整推导链,特别适合中国企业的数字化转型场景。

友莘居士的博客 2179

Oracle Database RAC 11gR2学习笔记 之 Oracle 11gR2 Clusterware

============================================================OracleDatabaseRAC11gR2学习笔记之Oracle11gR2Clust...

cthbl797150的博客 275

TWINCAT3保姆级教程:手把手教你给Ecat从站烧录EEPROM(含XML配置避坑指南)

本文提供TWINCAT3环境下Ecat从站EEPROM烧录的完整教程,涵盖XML配置避坑指南。详细讲解环境准备、设备扫描、XML文件配置、EEPROM烧录流程及故障排查,帮助工程师高效解决设备识别问题,提升产线调试效率。

weixin_30693683的博客 518

oracle 学习笔记 varchar2

1、varchar2最大可以存储4000个字节,也就是最大只能写成varchar2(4000);   2、创建表 create table T_TEST (   ID            VARCHAR2(32) not null,   TEST_VARCHAR2 VARCHAR2(4000),   USERNAME      VARCHAR2(6) )   3、向TES...

u014192806的专栏 621

(四) OpenClaw-Skill技能全面了解和自定义技能

OpenClaw Skills是提升AI代理功能性的关键模块。本文系统介绍了Skills的核心概念、获取渠道和创建方法。Skills作为标准化指令集合,能让OpenClaw从单纯理解升级为实际执行任务,相比传统System Prompt具有模块化、可复用等优势。用户可通过Clawhub官方商店、GitHub社区等渠道获取5700+现成技能,或按需开发自定义Skill。文章详细演示了创建"Hello World"示例技能的完整流程,包括编写Python脚本、配置SKILL.md文件、部署。

直到世界的尽头 8299

基于 ESP32 的宿舍洗浴热水余量预测与智能排队提醒系统设计与实现

本系统以 ESP32 为主控核心,通过超声波液位传感器实时监测储热水箱剩余水量,配合 DS18B20 温度传感器采集水温数据,建立热水余量预测模型估算可用洗浴时长;同时通过红外人体传感器统计浴室排队人数,结合人均洗浴时长计算预计等待时间,并通过 OLED 屏本地显示 + WiFi Web 服务器远程推送的方式实现排队提醒功能。

weixin_42300449的博客 45

Oracle学习笔记2

在Oracle数据库中要顺利地解决一个问题很不容易 ,你可能会花大量精力去做相应的研究,并按照标准步骤一步一步执行,特别是阅读了官方文档,README文本文件后。在我的Oracle支持笔记中(Metalink),包括了“完整的”FAQ,看了这些后,你成功的可能性几乎会达到100%,如果低于100%,那可能是你不经意发现了Oracle的一个bug,因为Oracle提供的某些官方信息,如安装某个特性X

kaka的专栏 427

YOLO系列算法改进 | C3k2改进篇 | 融合MambaOut轻量化门控架构 | 纯卷积实现超越Mamba性能的同时兼顾极致轻量化与边缘部署效率 | CVPR 2025

YOLO系列算法改进 | C3k2改进篇 | 融合MambaOut轻量化门控架构 | 纯卷积实现超越Mamba性能的同时兼顾极致轻量化与边缘部署效率 | CVPR 2025 (以YOLOv26最新目标检测模型为基础,利用C3k2_MambaOut创新模块进行改进)

2502_91881744的博客 224

oracle学习笔记2

oracle的一些管理工具 一,本节内容: 1.DBA可以操作有些什么样的工具。 2.oracle update installer 3.oracle 优化工具 4.建立password file,使用户成为DBA 5.ORACLE Enterprise Manager 二,Dabatase Administrator Tools 1.Oracle Universal Installer(OUI)...

daniel.wuz 120

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

oracle 学习笔记 2

--oracle 表管理 表名必须以字母开头,不能超过30个字符,不用保留字,只能使用如下字符A-Z,a-z,0-9,$,#等。 --oracle数据类型 字符型 char  定长 最大2000字符,  效率高, 查询速度很快。char(10)  不足10的用空格补齐。 varchar2  变长  最大4000字符 clob 字符型大对象  4G。 数字类型 number  范围

256

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

深入浅出oracle 2,深入浅出Oracle学习笔记(2)

第二章参数及参数文件数据库创建过程中pfile与spfile的交接:当使用DBCA自定义(不使用模版)创建数据库时,可以生成数据库创建脚本。这里面存在一个init.ora文件,这个文件是根据用户创建数据库之前定义的参数自动生成的,该参数文件被用来在创建过程中启动数据库。通过CreateDB.sql可以看到这个引用。在数据库创建完成之后,Oracle调用postDBCreation.sql脚本来进行...

weixin_33724434的博客 294

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Oracle分析函数学习笔记2

环境:windows 2000 server + Oracle8.1.7 + sql*plus目的:以oracle自带的scott模式为测试环境,主要通过试验体会分析函数的用法。2.rank()、dense_rank() 的使用原表信息:SQL> break on deptno skip 1  -- 为效果更明显,把不同部门的数据隔段显示。SQL> select deptno,ename,sal

njhart2003的专栏 998

Oracle学习笔记(2) PLSQL编程基础

<br />这是第二章的学习笔记,学习完第一章的基础之后,从现在开始要学习Oracle编程了……,希望大家能多给俺一些支持啊! <br />    编程时使用的工具是PLSQL Developer 7.1.4Sql代码 select * from Employee;  select * from dba_tab_cols t where t.table_name='EMPLOYEE';  <br /> Sql代码 -- 声明部分,用于定义变量  declare  <br /><br />constant用于

wdxxl的专栏 972

Oracle 学习笔记2

如何查看一台机器的windows server 2003 系统是32位还是64位 开始-运行-cmd-systeminfo 查看数据库是否处于force logging 模式? select force_logging from v$database      查询Oracle Server端]的字符集? select userenv('language') from dual

无心人的终点 647

ORACLE学习笔记-CentOS 7.5 Oracle 11gR2安装部署

CentOS 7.5 Oracle 11g R2安装部署一、环境检查1、操作系统检查内存检查3、SWAP检查4、共享内存检查5、磁盘空间检查二、YUM配置及RPM依赖包安装1、 本地YUM源搭建2、 RPM依赖包安装三、创建组、用户、目录1、创建组、用户2、创建目录四、系统参数配置1、关闭防火墙2、配置/etc/hosts文件3、关闭SELINUX4、配置内核参数5、配置/etc/security/limits.conf6、配置/etc/pam.d/login7、配置/etc/profile8、配置ORAC

gangma2 1152

JBoss SSO学习笔记2 oracle

 我用jboss sso和oracle实现的小例子(没有使用jaas)1、jboss-sso.sar/conf/sso.cfg.xml部分配置:(这里的数据库连接是OracleLoginProvider,也要注意写的正确)                    jdbc:oracle:thin:@localhost:1521:orcl        user        pass      

张俊芳的专栏 2350
上一篇: oracle学习笔记(1)
下一篇: 网上商城不同类别产品数据库的设计思路
Champion_netjava
博客等级 码龄16年 10粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值