java直_java直连数据库小结
一:取得数据库连接
1.用DriverManager取数据库连接
例子
String className,url,uid,pwd;
className = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;
uid = "system";
pwd = "manager";
Class.forName(className);
Connection cn = DriverManager.getConnection(url,uid,pwd);
2.通过JNDI取得数据库连接
用jndi(java的命名和目录服务)方式
例子
String jndi = "jdbc/db";
Context ctx = (Context) new InitialContext().lookup("java:comp/env");
DataSource ds = (DataSource) ctx.lookup(jndi);
Connection cn = ds.getConnection();
二:执行sql语句
1.用Statement来执行sql语句
String sql;
Statement sm = cn.createStatement();
sm.executeQuery(sql); // 执行数据查询语句(select)
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close();
2.用PreparedStatement来执行sql语句
String sql;
sql = "insert into user (id,name) values (?,?)";
PreparedStatement ps = cn.prepareStatement(sql);
ps.setInt(1,xxx);
ps.setString(2,xxx);
...
ResultSet rs = ps.executeQuery(); // 查询
int c = ps.executeUpdate(); // 更新
三:处理执行结果
查询语句,返回记录集ResultSet
更新语句,返回数字,表示该更新影响的记录数
ResultSet的方法
1、next(),将游标往后移动一行,如果成功返回true;否则返回false
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值
四:释放连接
cn.close();
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection
可滚动、更新的记录集
1、创建可滚动、更新的Statement
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);
该Statement取得的ResultSet就是可滚动的
2、创建PreparedStatement时指定参数
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet.absolute(9000);
批量更新
1、Statement
Statement sm = cn.createStatement();
sm.addBatch(sql1);
sm.addBatch(sql2);
...
sm.executeBatch()
一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有
2、PreparedStatement
PreparedStatement ps = cn.preparedStatement(sql);
{
ps.setXXX(1,xxx);
...
ps.addBatch();
}
ps.executeBatch();
一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。
事务的处理
1、关闭Connection的自动提交
cn.setAutoCommit(false);
2、执行一系列sql语句
要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close
Statement sm ;
sm = cn.createStatement(insert into user...);
sm.executeUpdate();
sm.close();
sm = cn.createStatement("insert into corp...);
sm.executeUpdate();
sm.close();
3、提交
cn.commit();
4、如果发生异常,那么回滚
cn.rollback();
java直_java直连数据库小结相关推荐
- progress java驱动_JAVA连接Progress数据库
JAVA连接Progress数据库,JAVA连接Progress数据库-- 经过一天的不懈努力终于成功了 !!! 废话就不多说了,上代码! package com.prog.test; import ...
- java set中取数据_Java中取数据库用的ResultSet问题
这段时间做java项目,在操作数据库的时候,犯了一个错误,请看下面的程序 ....... //前面连接数据库方面的省略 ResultSet result ...
- java项目失败直接报Disconnected from server
这bug出的简直就是无法形容,耗时3天才解决,文末记得点赞,收藏,或许你现在还没有遇到,但是 收藏起来也不错. 异常一:IDEA tomcat 启动java项目失败直接报Disconnected fr ...
- java监控数据库性能_Java:GraalVM数据库流性能
java监控数据库性能 GraalVM是JVM块的新成员. 它是一个开源虚拟机,能够同时运行多种编程语言,例如Java,Rust和JavaScript. GraalVM还具有一个新的内部代码优化器管道 ...
- java 连接mysql工具类_java连接Mysql数据库的工具类
一个封装好的链接Mysql数据库的工具类,可以方便的获取Connection对象关闭Statement.ResultSet.Statment对象等等 复制代码 代码如下: package myUtil ...
- java连接mysql时区修改_java连接mysql数据库时的时区设置问题(time_zone)
java在连接mysql数据库时,会由于时区设置不正确导致报以下的错误: The server time zone value '???ú±ê×??±??' is unrecognized or re ...
- java sql date 时分秒_java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间...
java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Da ...
- java开发boss直聘要求(2020年4月27日)
技能要求: 1.精通Java,熟悉设计模式: 2.熟悉Spring.Jersey.MyBatis.shiro.qutarz等框架:熟悉dubbo.springcloud等微服务框架,有微服务开发经验: ...
- java班级管理系统用到数据库_java班级管理课程设计报告--班级管理系统.docx
java班级管理课程设计报告--班级管理系统 <Java程序设计>课程设计报告课设题目: 班级管理系统 学院:信息技术工程学院 专 业:计算机科学与技术 目 录1 引言11.1 开发背景及 ...
- java sqlserver数据库_java连接sqlserver2008数据库配置
1.首先要去Microsoft官网下载sqljdbc2.0驱动--Microsoft SQL Server JDBC Driver 2.0.exe,很小大概就4M,解压后里面有2个Jar包,sqljd ...
最新文章
- noclobber:避免文件的重写
- mysql 高级语法,SQL 语法高级
- 10 ORA系列:ORA-12704 字符集不匹配 character set mismatch
- 【Android】Android程序自己主动更新
- RabbitMQ学习(七)_RabbitMQ Consumer获取消息的两种方式(poll,subscribe)解析
- docker修改容器名字
- julia 编程语言_Julia编程语言中的变量
- golang生成c-shared so供c语言或者golang调用到例子
- dc持久内存与mysql_为什么持久性内存会改变你的世界!
- 怎样对待一个延期的项目
- linux fls函数,Linux学习笔记- find 命令详解
- 转换FlashFxp站点和FtpRush站点的好工具
- python爬图代码实例_python爬虫爬取图片简单代码示例
- 深度学习面试问题总结
- ubuntu 18.04下解决网易云音乐不能打开的问题
- CSDN文章如何设置【分级标题】和【目录】
- 基于python的购物比价_python比价
- find grep联合搜索
- SRM采购管理系统投标管理模块:阳光招采,助力建筑材料企业智慧采购
- Html5 获取手机短信号码
热门文章
- sql row_number() over() 来自动产生行号
- Confluence3.4的安装和配置
- Kibana饼图介绍
- Python创建空DataFrame及添加行数据
- 微软已成全球SaaS老大,谁将成为中国SaaS行业龙头
- linux中/etc/rc.local脚本的作用
- [转] 基于 Apache Mahout 构建社会化推荐引擎
- 在用户控件中动态添加控件及事件
- FD.io——助你创新更高效、更灵活的报文处理方案
- (一)洞悉linux下的Netfilteriptables:什么是Netfilter?