java-jdbc-db2

2023-11-13

0、得到结果集的一种方式

/*查询得到结果集的另一种方式*/
Statement stmt = con.createStatement();    
String sql="select value from restart";    
ResultSet rs = stmt.executeQuery(sql);        


一、初始化连接数据库 

1.装载一个类并且实例化

Class.forName("java:jdbc:db2");

2.

3.,conn.setAutoCommit(boolean b)方法,传入一个false,这样将不会自动提交,需要使用conn.commit()方法,手动提交事务。

二、更新操作

.executeQuery方法,返回更新的行数

三、sql错误码的获取

catch(SQLException x){
int SQLCode = x.getErrorCode();//每个产品内部的错误编码集
String SQLState = x.getSQLState();//国际标准错误编码集
String msg = x.getMessage();
}

四、删除语句

PreparedStatement pstmt = null;
String mysql=null;
String eno="000110";
mysql="DELETE FROM TEMPL WHERE EMPNO = ?";
pstmt = con.prepareStatement(mysql);
pstmt.setString(1,eno);
deleteCount = pstmt.executeUpdate();

把删除操作展现给用户,经确认再删除

讨论:主变量(host variables)

db2自动转换数据类型 D后是数据库sample 表jlu.employee

db2dclgn -D sample -T jlu.employee -L Java

五、关于空值

rs.getInt(1)//游标先指到这里

rs.waNull()//再进行是否为空值的判断

pstmt.setNull(1,java.sql.Type.SMALLINT);//传入空值

PreparedStatement stmt = null;

sql="UPDATE TEMPL SET PHONENO = ? "+" WHERE EMPNO = '000110' "

六、异常处理

// 违反约束 不可以为空
//类型不匹配
//溢出 数值型
//如何判断一条语句是否成功
//SQLCA 任何数据库 任何主语言都可以用 加头文件

七、游标

ResultSet prs1=null,prs2=null;
String sql;
PreparedStatement pstmt1 = con.prepareStatement(sql,prs1.TYPE_FORWARD_ONLY,prs1.CONCUR_READ_ONLY);//
//第二个参数:游标的方向
//第三个:并发,只读的时候才可以并发
//jdbc2.0 支持并发的写操作  但是db2不支持
/*可滚动的游标*/
PreparedStatement pstmt2 = 
con.prepareStatement(sql,prs2.TYPE_SCROLL_INSENSITIVE,prs2.CONCUR_READ_ONLY);
/*...执行语句,获得结果集*/
/*从后往前读的游标*/
prs.afterLast();            //结果集最后一行的最后面
while(prs2.previous()){}    //往前看结果集
/*指向特定的行*/
prs.absolute(3)             //指向结果集第三行
相对 读下一行
relative(+1)读下一行
relative(-1)读上一行

物化结果集

专门为排序定义临时的表空间

先查再修改

String myselect ="select lastname, firstname from emp"+" for update" 

String myupdate = "update emp set firstname = ? where current of "//后面跟指向查询结果的游标名字
ResultSet rs = stmt.executeQuery(myselect);
String cursorName = rs.getCursorName();
PreparedStatement ps =con.prepareStatement(myupdate+cursorName);

关闭结果集游标,即调用rs.close(),不会释放锁

但是提交事务.commit()会释放锁

八、结果集的重定位,部分提交

目的:防止被一两个错误打断海量修改操作

以update为例

采用stmt.executeUpdate("COMMIT")更新所有操作

九、结果集元数据接口(ResultSetMetaData)

数据库元信息

Connection sample = DriverManager.getConnection("jdbc:db2:sample");

DatabaseMetaData dbmd = sample.getMetaData();

ResultSet rs = dbmd.getSchemas();

while(rs.next()){

String s = rs.getString(1);

System.out.println("\nSchema Name:" +s);

}

结果集元信息

ResultSet rs = stmt.executeQuery("select * from udba.staff");
ResultSetMetaData rsmd = rs.getMetaData();
int Colomn_Number = rsmd.getColumnCount();
Sysem.out.println("\nNumber of colomns in result set = "+ Colomn_Number);

十、批处理

addbatch()                        //临时空间保存完整的sql语句

,stmt.executeBatch()        //比一次一提交效率高

十一、大对象

数据以大对象的形式存放在表中(Blob二进制大对象)音频

与常规列变量的访问不同jdbc有clob和blob

Clob字符型大对象

每个数据库产品都有vatchar,最大宽度255char。

oracle 4G   db2 2G

软件系统综合实践  必须用大对象的操作

doubleByte dbclob双字节的汉字、韩文

十二、clob对象的读取

 posstr (,)personal在resume列中第一次出现的位置

 连接两个字符串

substr 有三个参数时:第二个参数表明读取的开始位置,第三个是结束

有两个参数时:第二个参数表明读取开始位置,读到结尾。

十三、BLOB对象的读取

File file = new FIle("C:/a.jpg);        //定义要写入的文件

java.io.BufferedInputStream imageInput = 

new java.io.BufferedInputStream(new java.io.FileInputStream(file));        //定义文件的写入流

preparedStatement.setBinaryStream(1,imageInput,(int)file.length());        //使用函数写入

/*执行SQL语句*/

/*对BLOB的读取采取步骤*/

Blob blob = (Blob)rs.getBlob(1);

java.io.InputStream inputStream = blob.getBinaryStream();        //把Blob对象转化为流

File fileOutput = newFile("c:/backa.jpg");                                       //定义要写入的文件

FileOutputStream fo = new fileOUtputStream(fileOutput);

/*写入文件*/

int c;

while((c=inputStream.read())!=-1){fp.write(c);}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java-jdbc-db2 的相关文章

随机推荐

  • MSP430F5529学习笔记(6)——导入MSP430Ware,查看例程

    MSP430WARE下载 目录 在线版本 下载MSP430Ware 查看例程 导入例程 离线版本 下载MSP430Ware 查看例程 导入例程 MSP430Ware里面有很多例程和库函数使用手册 我们可以查看学习 非常重要 在线版本 下载M
  • 使用计算机结束时断开终端的连接属于什么,计算机结束时断开终端的连接属于什么...

    计算机结束时断开终端的连接属于外部终端的物理安全 终端安全管理 endpoint security management 是一种保护网络安全的策略式方法 它需要终端设备在得到访问网络资源的许可之前遵从特定的标准 推荐学习 web前端视频教程
  • 【数模】插值算法

    插值算法的介绍 插值的作用 当现有的数据是极少的 不足以支撑分析的进行时 用于 模拟产生 一些新的但又比较靠谱的值来满足需求 插值函数 插值 插值法的概念 插值法的分类 插值多项式 P x 为次数不超过n的代数多项式 即 数模中也常见 但不
  • ARM——体系架构

    1 ARM简介 ARM是Advanced RISC Machines的缩写 它是一家微处理器行业的知名企业 该企业设计了大量高性能 廉价 耗能低的RISC 精简指令集 处理器 公司的特点是只设计芯片 而不生产 它将技术授权给世界上许多著名的
  • Centos下使用脚本快速安装GO语言环境

    Centos使用shell脚本快速安装go环境并安装spaceVim IDE 脚本如下 bin bash env git install echo 安装依赖中 sudo yum y install make autoconf automak
  • Tomcat配置context.xml问题

    关于Tomcat的配置文件问题 请参考Apache Tomcat官网Document菜单 根据版本号选择恰当的Reference 我使用的环境 netbeans 内嵌 Tomcat 8 0 1
  • 彻底删除VMware虚拟机

    您是否和我一样被VMware气到了呢 您是否再也不想理VMware了呢 您是否不想再在自己电脑上看到VMware这几个英文字母了呢 来吧 跟着我的步骤 一起和VMware说拜拜吧 一 在卸载VMware虚拟机之前 要先把与VMware相关的
  • 工业上的数控机床所属计算机应用的什么领域,以下哪一项不是企业初步战略方案包括的内容?()。...

    摘要 弹簧振子的振幅增加一倍 下业初则 步战工业机器人最重要的核心能力 社会学是指一门科学 略方即它以解释的方式来理解社会行动 略方据此 通过社会行为的过程及其结果 对社会行为作出因果解释 因此 社会学的研究对象是 研究的方法是 弹簧振子的
  • 西门子S7 模拟器使用教程

    一 S7协议概述 S7协议是西门子S7系列PLC通信的核心协议 它是一种位于传输层之上的通信协议 其物理层 数据链路层可以是MPI总线 PROFIBUS总线或者工业以太网 S7以太网协议本身也是TCP IP协议簇的一员 S7协议在OSI中的
  • PCB中过孔和通孔焊盘的区别

    在PCB设计中 过孔VIA和焊盘PAD都可以实现相似的功能 它们都能插入元件管脚 特别是对于直插 DIP 封装的的器件来说 几乎是一样的 但是 在PCB制造中 它们的处理方法是不一样的 1 VIA的孔在设计中表明多少 钻孔就是多少 然后还要
  • 接口继承_1

    摘自Jeffrey的CLR via CSharp 接口方法默认是virtual and sealed 意思是接口方法默认是没有继承的 这一点在你需要多态时需要注意 Base b new Base Derived d new Derived
  • 修改Windows Server 2012远程桌面连接端口并连接

    目录 文章目录 目录 一 修改注册表 二 添加防火墙放行端口 三 控制面板设置允许被远程连接 四 重启远程桌面服务 五 进行远程连接 一 修改注册表 步骤1 打开注册表 方法一 win键 R调出命令运行输入框 输入 regedit exe
  • 网络安全-常见面试题(Web、渗透测试、密码学、Linux等)

    目录 WEB安全 OWASP Top 10 2017 Injection 注入攻击 Broken Authentication 失效的身份认证 Sensitive Data Exposure 敏感数据泄露 XXE XML 外部实体 Brok
  • C#开发-----百变方块游戏

    转载请标明是引用于 http blog csdn net chenyujing1234 例子代码 http www rayfile com zh cn files b6ed0bc0 8e9e 11e1 8178 0015c55db73d n
  • Web前端开发精品课HTML CSS JavaScript基础教程HTML部分知识点总结

    内容来自莫振杰Web前端开发精品课HTML CSS JavaScript基础教程章节总结 第1章 HTML简介 1 前端技术简介 1 从Web1 0到Web2 0 网页制作已经变成前端开发了 对于前端开发来说 你要学的并不是什么 网页三剑客
  • 宿主机无法ping通docker容器IP解决

    背景 安装docker后 发现启动容器的端口8082 映射到宿主机的端口80访问主机没有反应 此时进入容器查看日志 发现并没有请求打进来 现象 正在连接 localhost localhost 1 80 已连接 已发出 HTTP 请求 正在
  • python3 Flask 简单入门

    flask是python里面最轻便的框架 这里演示了访问主页 登陆成功 登陆失败的页面显示 在编写URL处理函数时 除了配置URL外 从HTTP请求拿到用户数据也是非常重要的 Web框架都提供了自己的API来实现这些功能 Flask通过re
  • android游戏开发基础

    学习android已经差不多接近一年了 以前一直做的android应用 现在准备搞android游戏开发 觉得以前都没能把做应用的经验总结下来 现在决定要把游戏这块的记录下来 声明我也是初学者 首先得有一定的数学与物理基础 其次得具有一定的
  • ICLR 2022 超越Focal Loss PolyLoss用1行代码+1个超参完成超车

    pytorch版 有两种 交叉熵版和Poly1FocalLossloss GitHub abhuse polyloss pytorch Polyloss Pytorch Implementation 分类版 PolyLoss polylos
  • java-jdbc-db2

    0 得到结果集的一种方式 查询得到结果集的另一种方式 Statement stmt con createStatement String sql select value from restart ResultSet rs stmt exe