一:取得数据库连接

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直连数据库小结相关推荐

  1. progress java驱动_JAVA连接Progress数据库

    JAVA连接Progress数据库,JAVA连接Progress数据库-- 经过一天的不懈努力终于成功了 !!! 废话就不多说了,上代码! package com.prog.test; import ...

  2. java set中取数据_Java中取数据库用的ResultSet问题

    这段时间做java项目,在操作数据库的时候,犯了一个错误,请看下面的程序 .......                        //前面连接数据库方面的省略 ResultSet  result ...

  3. java项目失败直接报Disconnected from server

    这bug出的简直就是无法形容,耗时3天才解决,文末记得点赞,收藏,或许你现在还没有遇到,但是 收藏起来也不错. 异常一:IDEA tomcat 启动java项目失败直接报Disconnected fr ...

  4. java监控数据库性能_Java:GraalVM数据库流性能

    java监控数据库性能 GraalVM是JVM块的新成员. 它是一个开源虚拟机,能够同时运行多种编程语言,例如Java,Rust和JavaScript. GraalVM还具有一个新的内部代码优化器管道 ...

  5. java 连接mysql工具类_java连接Mysql数据库的工具类

    一个封装好的链接Mysql数据库的工具类,可以方便的获取Connection对象关闭Statement.ResultSet.Statment对象等等 复制代码 代码如下: package myUtil ...

  6. java连接mysql时区修改_java连接mysql数据库时的时区设置问题(time_zone)

    java在连接mysql数据库时,会由于时区设置不正确导致报以下的错误: The server time zone value '???ú±ê×??±??' is unrecognized or re ...

  7. 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 ...

  8. java开发boss直聘要求(2020年4月27日)

    技能要求: 1.精通Java,熟悉设计模式: 2.熟悉Spring.Jersey.MyBatis.shiro.qutarz等框架:熟悉dubbo.springcloud等微服务框架,有微服务开发经验: ...

  9. java班级管理系统用到数据库_java班级管理课程设计报告--班级管理系统.docx

    java班级管理课程设计报告--班级管理系统 <Java程序设计>课程设计报告课设题目: 班级管理系统 学院:信息技术工程学院 专 业:计算机科学与技术 目 录1 引言11.1 开发背景及 ...

  10. java sqlserver数据库_java连接sqlserver2008数据库配置

    1.首先要去Microsoft官网下载sqljdbc2.0驱动--Microsoft SQL Server JDBC Driver 2.0.exe,很小大概就4M,解压后里面有2个Jar包,sqljd ...

最新文章

  1. noclobber:避免文件的重写
  2. mysql 高级语法,SQL 语法高级
  3. 10 ORA系列:ORA-12704 字符集不匹配 character set mismatch
  4. 【Android】Android程序自己主动更新
  5. RabbitMQ学习(七)_RabbitMQ Consumer获取消息的两种方式(poll,subscribe)解析
  6. docker修改容器名字
  7. julia 编程语言_Julia编程语言中的变量
  8. golang生成c-shared so供c语言或者golang调用到例子
  9. dc持久内存与mysql_为什么持久性内存会改变你的世界!
  10. 怎样对待一个延期的项目
  11. linux fls函数,Linux学习笔记- find 命令详解
  12. 转换FlashFxp站点和FtpRush站点的好工具
  13. python爬图代码实例_python爬虫爬取图片简单代码示例
  14. 深度学习面试问题总结
  15. ubuntu 18.04下解决网易云音乐不能打开的问题
  16. CSDN文章如何设置【分级标题】和【目录】
  17. 基于python的购物比价_python比价
  18. find grep联合搜索
  19. SRM采购管理系统投标管理模块:阳光招采,助力建筑材料企业智慧采购
  20. Html5 获取手机短信号码

热门文章

  1. sql row_number() over() 来自动产生行号
  2. Confluence3.4的安装和配置
  3. Kibana饼图介绍
  4. Python创建空DataFrame及添加行数据
  5. 微软已成全球SaaS老大,谁将成为中国SaaS行业龙头
  6. linux中/etc/rc.local脚本的作用
  7. [转] 基于 Apache Mahout 构建社会化推荐引擎
  8. 在用户控件中动态添加控件及事件
  9. FD.io——助你创新更高效、更灵活的报文处理方案
  10. (一)洞悉linux下的Netfilteriptables:什么是Netfilter?