PowerPersonal开发实录:从Database到User Interface

来源:互联网 发布:北京知金教育官网 编辑:程序博客网 时间:2024/06/08 03:33

6.10 - 6.11

今天开始开发PowerPersonal, 希望能够做成一款出色的个人管理软件,第二个目标是学习java的基础技术,从关系数据库到UI的点点滴滴。好吧,出发!

 

做的第一个模块是通讯录管理。超级简单,只有一个表Contact:

 

Contact

------------------------

CONTACT_ID: int

NAME:        varchar(32)

RELATION:       int

EMAIL:      varchar(32)

CELLPHONE:      varchar(32)

HOMEPHONE:    varchar(32)

WORKPHONE:      varchar(32)

QQNUM:      varchar(32)

 

数据库使用一个轻量级的数据库derby,使用一个derby.jar就可以了。的确相当简单。

数据库连接跟jdbc兼容得很好,完全没有必要考虑太多,但是还是花了一个下午看了quickstart.

 

(1) 总结一下数据库连接的步骤:

(1)Class.forName(className)

 ( 2) conn = DriverManger.getConnection(connectionString)

 ( 3) statement = conn.createStatement()

       注意这里:创建statement时,可以传入关于resultSet的参数,包括并发性(ReadOnly或者Updatable),Scroll_Sensitive等等

      这些参数都很重要,下面用错误来说明。

(4) 创建表:statement.execute(CREATE_TABLE_SQL) 注意创建表之前可以用conn提供的getMetaData来检查数据表是否已经存在

 ( 5) 插入:PreparedStatement  ps= conn.prepareStatement(...?...) 用?表示需要替代的参数,然后用ps.setString(index, string)来fill in.

     ps.executeUpdate()

 (6) 删除同上

(7)修改,可以使用如插入一样的方法,也可以直接在ResultSet中修改,然后update到数据库中。

      代码很简单:

      ResultSet rs = statement.executeQuery(SQL)

      rs.updateString(index, string)

      rs.updateRow()

     但是需要注意两点:

      (1)并发性要设置成UPDATABLE(在创建statement时设置)

      (2)查询SQL中不能出现order by,否则会认为是readonly.

 

(8) 最后是数据库的shutdown。步骤是:

     try {

            DriverManager.getConnection("jdbc:derby:;shutdown=true");

        } catch (SQLException se)  {

            if ( se.getSQLState().equals("XJ015") ) {

                System.out.println("Database shut down normally");

            }else{

                System.out.println("Database did not shut down normally");

            }

      传递shutdown的消息,然后引擎就会关闭。

 

另外一个问题是:如何计算resultset的长度。

三种方法:

(1)用一个i++ (2)rs.last() / rs.getRow() 注意使用这种方法时需要ResultSet.Scroll这个参数(在创建statement时)

 

再另外一点就是HashMap的使用,其实用法就是相当简单的,就是一个key,value,两个都是Object类型。

不过要注意使用iterator时,注意一开始获得的iterator对象是指向null的,需要next()一下才能获得对象。iterator就是指针,明白这个就好办了。

 

 

 

 

原创粉丝点击