今天是12月的第一天了,11月已经结束了,培训进入第10天,我们现在是进行到jdbc的地方,
昨天商量了一下,由于班里有人要过来,我们就不准备换房子了,还在那里,把窗户封一下就行了。
课程难度开始增加,这就更需要一颗平常心来对待了……
------------------------------------------
课程开始:

首先是多态的分析:主要说的是java的多态是运行时多态,C++则分为编译时多态和运行时多态两种,
具体底层细节不清楚,以后再说吧。

昨天老师讲的getConnection伪代码其实是不正确的

读取数据接口:
Statement、PreparedStatement、CallableStatement
Statement中executeUpdate方法用来返回影响的行数。

例:
先记着导入昨天说的两个包,一个是oracle的,一个是mysql的。
public class QueryDemo
{
 Connection conn = null ;
 Statement stmt = null ;
 ResultSet rs = null ;
 try
 {
  Class.forName("oracle.jdbc.OracleDriver");
  conn = DriverManager.getConnection("jdbc:oracle:thin:"+
    +"hr/hr@localhost:1521:orcl");
  stmt = conn.createStatement();
  rs = stmt.executeQuery("select first_name,last_name from employees");
//结果集保存了一个叫做游标的概念,一开始指向的是第一行的前一个记录,所以对结果集进行任何
//操作之前都要将游标向下移动一位,比如absolute方法就可以将游标移动到指定位置
//如果结果集中有10条记录,那么游标共有12个位置。
  rs.absolute(2);//默认情况下游标只能向前移动一位,所以这么写是不可以的!!
  rs.afterLast();//这条语句在默认情况下也不可以用!!
  rs.previous();rs.last();//在默认情况下也是不可以用的!!

rs.next();//在默认情况下它是可以向下移动的,这个方法返回一个布尔值,
           //也就是如果下一条记录有值的话,那么返回是true,否则返回false。
 //现在rs包含了第二条记录
 //对结果集进行遍历的格式:
 while(rs.next())
 {
  System.out.println(rs.getString("first_name"));
  //注意getString中的列名必须是实际选出的列名,也就是说,如果列有别名的话,
  //使用别名。

//使用索引值的效率是高于使用列名的!
 }
 conn.close();//如果不关闭连接的话,好像也看不出什么问题,但是这样的话内存资源占用
             //得不到释放,数据库会当机,在整个系统中占用资源最多的就是数据库连接,
    //占用内存资源、cpu资源都非常多,close方法释放的是数据库端的资源,
    //而不是把这个Connection给垃圾回收掉,只有失去引用的对象才会被垃圾回收

Connection conn1 = stmt.getConnection();
 System.out.println(conn==conn1) ; //会打印出true
 System.out.println(conn.equals(conn1)) ; //也会打印出true
 //所以,用statement来getConnection的话得到的连接就是我们创建出来的连接
 //所以,一旦连接关闭了,statement肯定也无法使用了,statement一旦被关闭,结果集也被关了。
 //还有,第二条查询语句一旦被定义出来了,就不可以再用第一条查询语句的结果集了,
 //因为当执行第二条查询语句时,第一条查询语句的游标已经失效了,所以一般一个结果集没有处理
 //完毕时,是不创建第二个结果集的。

//虽然理论上可以只关闭连接,但是实际上不怎么作,而是先关闭结果集,再是语句,最后是连接。

//注意:如果仅仅向上面所说的关闭连接Connection的话,还是不够的,还应该主动关闭Statement
 //和resultSet
 
 //但是如果这么关闭:
 rs.close();
 stmt.close();
 conn.close();
 //也是不行的!!在实际中也肯定是通不过的!比方说,前面的语句如果出现异常的话,
 //上面三条语句一条都不执行了。应该至少放到finally块中,见下面
 
 //可以根据rs.getString(列索引整数或者列的名称)
 }
 catch(Exception ex)
 {
  …………………………
 }
 finally
 {
  try
  {
   if(rs!=null)
   {
    rs.close();  //这个只是释放了服务器数据库端资源
    rs = null ; //把rs置为空,可以垃圾回收,释放应用程序端的内存空间
   }
  }
  catch(SQLException ex)
  {
   e.printStackTrace();
  }

try
  {
   if(stmt!=null)
   {
    stmt.close();
    stmt = null ;
   }
  }
  catch(SQLException ex)
  {
   e.printStackTrace();
  }

try
  {
   if(conn!=null&&!conn.isClosed())
 //注意绝对不可以写成if(!conn.isClosed()&&conn!=null)
 //因为&&是短路与,之所以要用短路与,是因为如果第一个表达式为假
 //的话,那么后面都不执行了,试想一下,如果conn确实是null值的话
 //假如!conn.isClosed()表达式在前面的话,那么由于conn是null值,
 //则根本不可能调用isClosed方法,会抛空指针异常的!所以两个表达式不能交换位置,
 //而且不能用&,因为如果conn确实是空的话,因为符号&的关系,还会继续
 //!conn.isClosed()的表达式判断,还是会有空指针异常!
   {
    conn.close();
    conn = null ;
   }
  }
  catch(SQLException ex)
  {
   e.printStackTrace();
  }
 }

//上面的finally关闭才是正常的
};

---------------------------------
数据库连接池:
连接是很耗费资源的,动态连接数据库的网站一般很慢,
解决办法:
程序一开始就获得一个全局的连接,连接始终是有效的,但是速度会越来越慢,但是这个连接使用过程
中会造成内存的泄漏

12月1日——培训第10天相关推荐

  1. 清华大学教评中心 <jpxzx2019@mail.tsinghua.edu.cn> 12月24日9:00-11:10试讲评审材料(庞观和朱峰老师)

    ➤01 邮件通知 卓老师好!感谢您担任线上试讲评审专家! 1.评审时间: 2020年12月24日(周四)9:00-11:10 2.试讲教师及内容: 12月24日 上 午 上午 试讲时间 9:00-10 ...

  2. 12月23日——培训第29天

    今天是田老师讲课,我猜大概很多人都很想念他吧-- 其实大概很多人和我的想法类似:张老师的教学不适合初学者,更适合有一定基础且对知识点有很强把握的人,相对初学 来说,还是田老师的风格较容易让人接受一些. ...

  3. 12月25日——培训第31天

    圣诞节--西方基督徒笃信的一天,圣灵降临的一天,什么时候竟然变成了中国人津津乐道的节日了呢--全球化.国际化已经 让我们没有太多自己的东西了,今天的中国人血脉中的传统文化还能保留有多少呢?我们这些现在 ...

  4. 12月2日——培训第11天

    今天是周六,由袁龙友老师讲解SQLServer,以后这样的来自企业的老师可能会陆续前来吧,虽然 今天不是田老师上课,但是他也来了,难道他真的是这一期的主要负责人?张老师讲课的时间又能 有多少呢?当时可 ...

  5. 12月7日——培训第15天

    今天应该是开始讲Hibernate了吧,昨天换了宿舍,原来那个宿舍虽然说地方大,但是晚上实在是太冷了, 现在换到的地方就是金毅从前的宿舍,也是在3层,现在好了,月租也便宜,屋子也暖和,很不错了-- 今 ...

  6. 12月5日——培训第14天

    今天改坐了307,虽然车挤了一些,但是确实十分的顺利,没有一点堵车,不错. 今天该是行集rowset了吧,也不知道这netMeeting能不能用了. ------------------------- ...

  7. 12月16日——培训第23天

    开始大风降温了,其实降到什么程度都无所谓,反正教室暖和,宿舍暖和,顶多就是路上冷点,这有什么呢 上午课程开始: HTML是谁发明的?Tim Berners-lee,英国人,父母参与过世界上第一台计算机 ...

  8. 12月9日——培训第17天

    上午课程开始: 回顾:配置文件和映射文件:SessionFactory和Session的使用注意事项 配置文件 1 使用XML : 调用Configuration.configure()方法,如果不传 ...

  9. 12月19日——培训第26天

    今天只上半天课,原因嘛,也简单,田老师经常的一周6天的上课,觉得累了,所以这周的第六天 他也就给自己放了半天假-- ------------------------------------------ ...

最新文章

  1. 控制台打印汉字的方法
  2. 杭电 1181 变形课
  3. SpringBatch简介
  4. HPE 的 OpenSwitch 项目得到 Linux 基金会支持
  5. maven的pom.xml中profiles的作用
  6. 如果我们预先得知未来某一刻会因为此刻的决定而失败,那是否还会继续努力?
  7. ViewPager的事件冲突的解决
  8. 【解题报告】Leecode 2057. 值相等的最小索引——Leecode周赛系列
  9. 机器学习实战应用50讲(一)-使用student’s T检验的未必是学生
  10. 《软件需求分析(第二版)》第 6 章——获取客户的需求 重点部分总结
  11. python分析犯罪数据_使用 SparkSQL 分析纽约市犯罪数据
  12. CSS从大图中抠取小图完整教程(background-position应用) (转)
  13. .net mysql 工作流_一个适合于.NET Core的超轻量级工作流引擎:Workflow-Core
  14. Vue 过滤器/watch/computed
  15. 指针变量使用规则实例
  16. Postgresql 地理位置操作
  17. 北大编程网格【练习题】,北医计算概论课程编程题答案整理,C语言/python/C++
  18. 近几年CVPR图像压缩总结
  19. 公开我的 星际帝国 辅助程序源代码
  20. 拒绝低销量:2022最新YouTube引流亚马逊方法

热门文章

  1. 学校计算机室安全责任书,学校功能室安全责任书
  2. 基于Python实现的Horn子句归结
  3. 苹果Mac自带词典完美扩充
  4. Verilog中同步复位和异步复位比较
  5. java 读取局域网交换机_局域网技术_交换机的工作方式
  6. 代码保护软件 VMProtect 用户手册: 保护应用程序的三大要素
  7. 三菱FX3U 485ADP与4台欧姆龙E5cc温控器远程
  8. 基于调用百度翻译API的简易翻译器(python)
  9. 【PyQt5】:QThread:Destroyed while thread is still running 解决方法
  10. 了深刻的军覅呕心超慢