发表于: 2018-03-01 20:59:47

1 690


今天完成的事情:

复习了一些基础知识,完成JDBC的增删改查,初步分离DAO

1)try catch finally的区别,这个很常用

try { // 执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容}

catch {// 除非try里面执行代码发生了异常,否则这里的代码不会执行}

Finally {// 不管什么情况都会执行,包括try catch里面用了return,可以理解为只要执行了try或者catch,就一定会执行}

使用限定:

1>    将遇见可能引发异常的代码包含在try语句块中。

2>    如果发生了异常,则转入catch的执行。catch有几种写法:

         1。catch

               这将捕获任何发生的异常

         2。catch(Exception e)

                这将捕获任何发生的异常。另外,还提供e参数,你可以在处理异常时使用e参数来获得有关异常的消息。

         3。catch(Exception的派生类e)

                 这将捕获派生类定义的异常,例如,我想捕获一个无效操作的异常,可以如下:

               catch(InvalidOperationException e)

               {

                    

                }

Catch可以有多个,也可以没有,每个catch可以处理一个特定的异常。如果没有catch块,异常总是向上抛出

3>     finally

         finally可以没有,也可以只有一个。无论有没有发生异常,在返回前,finally总是要执行,这以便让你有机会能够在异常处理最后做一些清理工作。比如关闭数据库连接等。

          如果没有catch语句块,那么finally块就是必须的

如果你不希望在这里处理异常,而当异常发生时提交到上层处理,但在这个地方无论发生异常,都要必须要执行一些操作。典型的应用就是进行数据库操作,举例如下:

try 

    DataConnection.Open(); 

    DataCommand.ExecuteReader(); 

    ... 

    return; 

finally 

    DataConnection.Close(); 

无论是否抛出异常,也无论从什么地方return返回,finally语句块总是会执行,这样你有机会调用close来关闭数据库连接(即使未打开或打开失败,关闭操作永远是可以执行的),以便于释放已经产生的链接,释放资源。

顺便说明,return是可以放在try语句块中的。但不管在什么时机返回,在返回前,finally将会执行。


2)JDBC新建步骤

JDBC代码一般步骤:

1>加载外部驱动程序(jar包)

2>正是加载驱动程序(Class.forName(driverName))

3>获取connection链接(在jdk的sql包中,只提供了一个类那就是DriverManeger,通过调用它的静态方法getConnection(),可以得到和数据库的连接)

4>创建sql语句的声明(Statement),执行sql语句(查询),遍历结果集

5>关闭数据库连接(一般用finally{}来处理,或者调用方法的形式来完成,关闭之前先判断你要关闭的对象连接是否为空,如果空那会抛出异常,所以先判断)


使用DAO模式来对数据库做增删改查操作

这种模式下大体上可以分为三个层:DAO层,服务层,表现层

表现层:相当于客户端用来查看,提交信息的角色

服务层:通知消息的角色

DAO:真正做事的角色(对数据库的某些操作)

就好比你去餐厅吃饭,你充当一个 (表现层)的角色,然后有美女服务员(服务层),问你需要吃什么东西,给你下一张订单,让你填。之后服务员把订单传到 厨师(DAO层)那里,具体操作厨师会搞定,一段时间后厨师把做好的食物传给服务员,服务员把食物在传给客户,这些操作就算基本完成了。

执行顺序:表现层—>服务层—>DAO层—>返回服务层—>返回表现层

3)DAO的设计原则(类似于前端抽服务)

DAO 是事务性对象。

一个典型的 DAO 执行像创建、更新和删除这样的事务性操作。

在设计 DAO 时,首先要问自己以下问题:

  • 事务要如何开始?
  • 事务应如何结束?
  • 哪一个对象将负责开始一个事务?
  • 哪一个对象将负责结束一个事务?
  • DAO 是否要负责事务的开始和结束?
  • 应用程序是否需要通过多个 DAO 访问数据?
  • 事务涉及到一个 DAO 还是多个 DAO?
  • 一个 DAO 是否调用另一个 DAO 的方法?


JDBC的增删改查


DAO的初步编写(只搭了一个架子)



明天计划的事情:

继续完成DAO的编写,然后初识mybatis 


遇到的问题:

想的太多,写的太少,今天补了下基础,明天撸起袖子干


收获:JDBC操作数据库也就是不断更改sql语句


返回列表 返回列表
评论

    分享到