⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventframe.java

📁 jbuilder2006一书的所有源代码
💻 JAVA
字号:
package save;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.dx.sql.dataset.*;
import com.borland.dbswing.*;
import com.borland.dx.dataset.*;
import java.sql.*;

public class EventFrame extends JFrame {
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout();
  Database database1 = new Database();
  QueryDataSet queryDataSet1 = new QueryDataSet();
  TableScrollPane tableScrollPane1 = new TableScrollPane();
  JdbTable jdbTable1 = new JdbTable();
  JdbNavToolBar jdbNavToolBar1 = new JdbNavToolBar();
  QueryResolver queryResolver1 = new QueryResolver();
  //声明SQL语句执行类
  Statement stmt;

  public EventFrame() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

  private void jbInit() throws Exception  {
    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(borderLayout1);
    this.setSize(new Dimension(400, 300));
    this.setTitle("截取存储操作事件");
    //建立与SQLServer的books数据库的联接
    database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor(
        "jdbc:microsoft:sqlserver://bemyfriend:1433;DatabaseName=books", "sa",
        "", false, "com.microsoft.jdbc.sqlserver.SQLServerDriver"));
    //取得bookcategory数据表的记录
    queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(
        database1, "select * from bookcategory", null, true, Load.ALL));
    //设置数据更新类
    queryDataSet1.setResolver(queryResolver1);
    //设置QueryResolver类的数据源
    queryResolver1.setDatabase(database1);
    //根据主键更新
    queryResolver1.setUpdateMode(com.borland.dx.dataset.UpdateMode.KEY_COLUMNS);
    //设置工具栏和表格的数据源
    jdbNavToolBar1.setDataSet(queryDataSet1);
    jdbTable1.setDataSet(queryDataSet1);
    //取得数据库连接
    Connection conn = database1.getJdbcConnection();
    //创建SQL语句执行类
    stmt = conn.createStatement();
    //删除工具栏的保存按钮的事件接收器
    jdbNavToolBar1.getSaveButton().removeActionListener(jdbNavToolBar1);
    //添加工具栏的保存按钮的事件
    jdbNavToolBar1.getSaveButton().addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        jButton1_actionPerformed(e);
      }
    });
    //添加数据操作接收器
    queryResolver1.addResolverListener(new com.borland.dx.dataset.ResolverAdapter() {
      //删除前事件
      public void deletingRow(ReadWriteRow row, ResolverResponse response)
          throws DataSetException {
        queryResolver1_deletingRow(row, response);
      }
      //添加前事件
      public void insertingRow(ReadWriteRow row, ResolverResponse response)
          throws DataSetException {
        queryResolver1_insertingRow(row, response);
      }
      //更新前事件
      public void updatingRow(ReadWriteRow row, ReadRow oldRow, ResolverResponse response)
          throws DataSetException{
        queryResolver1_updatingRow(row, oldRow, response);
      }
    });
    contentPane.add(tableScrollPane1, BorderLayout.CENTER);
    contentPane.add(jdbNavToolBar1, BorderLayout.NORTH);
    tableScrollPane1.getViewport().add(jdbTable1, null);

  }

  protected void processWindowEvent(WindowEvent e) {
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

  //删除前事件
  void queryResolver1_deletingRow(ReadWriteRow readWriteRow,
                                  ResolverResponse resolverResponse) throws
      DataSetException {
    //取得id
    int id = readWriteRow.getInt("id");
    System.out.println("截取删除事件:删除" + id + "记录.");
    //不使用QueryResolver类执行删除操作
    resolverResponse.ignore();
    //使用java.sql类包的类执行删除操作
    try{
      String sql = "delete from bookcategory where id = " + id;
      //加入删除Sql语句
      stmt.addBatch(sql);
    }catch(Exception ex){
      ex.printStackTrace();
    }
  }
  //添加前事件
  void queryResolver1_insertingRow(ReadWriteRow readWriteRow, ResolverResponse resolverResponse)
      throws DataSetException{
    int id = readWriteRow.getInt("id");
    String categoryName = readWriteRow.getString("categoryName");
    String categoryDescription = readWriteRow.getString("categoryDescription");
    System.out.println("截取添加前事件:添加" + categoryName);
    //不使用QueryResolver类执行添加操作
    resolverResponse.ignore();
    //使用java.sql类包的类执行添加操作
    try{
      String sql = "insert into bookcategory values(" + id + ", '" + categoryName
          + "', '" + categoryDescription + "')";
      //加入添加Sql语句
      stmt.addBatch(sql);
    }catch(Exception ex){
      ex.printStackTrace();
    }
  }
  //更新前方法
  void queryResolver1_updatingRow(ReadWriteRow row, ReadRow oldRow, ResolverResponse response)
      throws DataSetException{
    //取得原来的序号
    int id = oldRow.getInt("id");
    String categoryName = row.getString("categoryName");
    String categoryDescription = row.getString("categoryDescription");
    System.out.println("截取更新前事件:更新" + categoryName);
    //不使用QueryResolver类执行更新操作
    response.ignore();
    //使用java.sql类包的类执行更新操作
    try{
      String sql = "update bookcategory set categoryName = '" + categoryName +
          "', categoryDescription = '"
          + categoryDescription + "' where id = " + id;
      stmt.addBatch(sql);
    }catch(Exception ex){
      ex.printStackTrace();
    }
  }

  //保存按钮的单击方法
  void jButton1_actionPerformed(ActionEvent e) {
    try {
      //向数据提交数据,激活数据操作的事件
      database1.saveChanges(queryDataSet1);
      //批量执行sql语句
      stmt.executeBatch();
      //显示更新后的数据集
      queryDataSet1.refresh();
    }
    catch(Exception dse){
      System.out.println(dse);
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -