在桌面应用中使用JAVA DB(三)

上一篇 / 下一篇  2006-11-04 11:05:00 / 个人分类:学习笔记

private void deleteAddress() {

    int id = addressPanel.getId();

    if (id != -1) {

        db.deleteRecord(id);

        int selectedIndex = addressListPanel.deleteSelectedEntry();

        ...

    }

    ...

}

 

       AddressDao里,deleteRecord方式实际上是从数据库删除一条记录。当第一次创建数据库连接时,AddressDao就创建了一个PreparedStatement

 

stmtDeleteAddress = dbConnection.prepareStatement(

        "DELETE FROM APP.ADDRESS " +

        "WHERE ID = ?");

 

       PreparedStatement可以使用多次,每次只需要一个参数就能确定删除哪条记录。在设置了ID参数后,deleteRecord方法执行Update

 

public boolean deleteRecord(int id) {

    boolean bDeleted = false;

    try {

        stmtDeleteAddress.clearParameters();

        stmtDeleteAddress.setInt(1, id);

        stmtDeleteAddress.executeUpdate();

        bDeleted = true;

    } catch (SQLException sqle) {

        sqle.printStackTrace();

    }  

    return bDeleted;

}

 

       Edit按钮允许用户在AddressPanel里编辑当前选择的Address记录。在这个例子中,你可以修改记录的名字,城市或电话号码。

       Save按钮要么是在AddressPanel里创建和编辑新的Address,要么就尝试编辑更新存在的记录。如果用户是编辑一个记录。Save按钮将使用新的信息来更新记录。如果用户是创建一个新的记录,Save按钮将插入一个新的记录到数据库。新的还没有被保存。这时,它的ID域仍然设置的是默认值-1。一旦你保存这条记录,这个值是自动生成的,并成为该记录的唯一标识。

       下面是AddresFrame里的代码是通过调用DAOeditRecordsaveRecord方法来保存编辑后或新建的地址记录。当然,当你创建一条新记录,应用程序也必须更新AddressListPanel

 

private void saveAddress() {

    if (addressPanel.isEditable()) {

        Address address = addressPanel.getAddress();

        int id = address.getId();

        if (id == -1) {

            id = db.saveRecord(address);

            address.setId(id);

            String lname = address.getLastName();

            String fname = address.getFirstName();

            String mname = address.getMiddleName();

 

            ListEntry entry = new ListEntry(lname, fname, mname, id);

            addressListPanel.addListEntry(entry);

         } else {

            db.editRecord(address);

        }

        addressPanel.setEditable(false);

    }

}

 

       DAOeditRecord方法必须更新Address记录里更改的域。由于该应用程序示例不能分辨修改和未修改的域,它就更新了记录的所有域。下面是PreparedStatement对象和editRecord方法:

stmtUpdateExistingRecord = dbConnection.prepareStatement(

    "UPDATE APP.ADDRESS " +

    "SET LASTNAME = ?, " +

    "    FIRSTNAME = ?, " +

    "    MIDDLENAME = ?, " +

    "    PHONE = ?, " +

    "    EMAIL = ?, " +

    "    ADDRESS1 = ?, " +

    "    ADDRESS2 = ?, " +

    "    CITY = ?, " +

    "    STATE = ?, " +

    "    POSTALCODE = ?, " +

    "    COUNTRY = ? " +

    "WHERE ID = ?");

   

    ...

 

public boolean editRecord(Address record) {

    boolean bEdited = false;

    try {

        stmtUpdateExistingRecord.clearParameters();

        stmtUpdateExistingRecord.setString(1, record.getLastName());

        stmtUpdateExistingRecord.setString(2, record.getFirstName());

        stmtUpdateExistingRecord.setString(3, record.getMiddleName());

        stmtUpdateExistingRecord.setString(4, record.getPhone());

        stmtUpdateExistingRecord.setString(5, record.getEmail());

        stmtUpdateExistingRecord.setString(6, record.getAddress1());

        stmtUpdateExistingRecord.setString(7, record.getAddress2());

        stmtUpdateExistingRecord.setString(8, record.getCity());

        stmtUpdateExistingRecord.setString(9, record.getState());

        stmtUpdateExistingRecord.setString(10, record.getPostalCode());

        stmtUpdateExistingRecord.setString(11, record.getCountry());

        stmtUpdateExistingRecord.setInt(12, record.getId());

        stmtUpdateExistingRecord.executeUpdate();

        bEdited = true;

    } catch(SQLException sqle) {

        sqle.printStackTrace();

    }

    return bEdited;  

}

 

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-08-16  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 7145
  • 日志数: 129
  • 建立时间: 2006-11-04
  • 更新时间: 2008-05-03

RSS订阅

Open Toolbar