1、创建序列# create sequence 序列名 increment by 1 start with 1 maxvalue 999999999;
2、创建触发器# create or replace trigger 触发器名 before insert on 表名 for each row declare -- local variables here begin SELECT 序列名.Nextval INTO :NEW.自增列 FROM DUAL; end 触发器名;
案例
package com.zking.work;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class FileDemo extends JFrame {
// 上
private JPanel jpa = new JPanel();
private JLabel jla = new JLabel("路径");
private JTextField jtfa = new JTextField(15);
private JButton jba = new JButton("请选择文件");
private JButton jbb = new JButton("搜索");
// 中
private DefaultTableModel dtm = new DefaultTableModel();
private JTable jta = new JTable(dtm);
private JScrollPane jsp = new JScrollPane(jta);
// 下
private JPanel jpb = new JPanel();
private JButton jbc = new JButton("删除所有txt文件");
private JButton jbd = new JButton("删除所有小于5KB的文件");
private JButton jbe = new JButton("删除最近一个月内的文件");
public FileDemo() {
this.setTitle("文件管理器");
this.setSize(700, 400);
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
// 上
jtfa.setEditable(false);
jtfa.setText("D:\\Zking_course");//默认设置输入框中的值 给定一个路径
jpa.add(jla);
jpa.add(jtfa);
jpa.add(jba);
jpa.add(jbb);
// 中
dtm.addColumn("文件路径");
dtm.addColumn("文件名称");
dtm.addColumn("文件扩展名");
dtm.addColumn("文件大小(KB)");
dtm.addColumn("最后修改时间");
tableClearData();
//默认要显示输入框中的路径下的所有文件信息
String path = jtfa.getText();
File file = new File(path);
findFileAll(file);
// 下
jpb.add(jbc);
jpb.add(jbd);
jpb.add(jbe);
// 上
this.getContentPane().add(jpa, "North");
// 中
this.getContentPane().add(jsp, "Center");
// 下
this.getContentPane().add(jpb, "South");
/**
* 文件选择器的点击事件
*/
jba.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//实例化JFileChooser;
JFileChooser jfc = new JFileChooser();
//文件选择器默认选中只能是文件,需求中:选中文件夹
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
jfc.showDialog(null, "请选择目录");//控制展示
File selectedFile = jfc.getSelectedFile();
if(null!=selectedFile) {
//将选中的目录设置到对应的输入框中
jtfa.setText(selectedFile.getPath());
}
}
});
/**
*搜索文件目录的点击事件
*/
jbb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//清除
tableClearData();
//获取之前选中的路径在jtfa中
String filePath = jtfa.getText();
File file = new File(filePath);
findFileAll(file);
}
});
/**
* 删除所有txt文件的点击事件
*/
jbc.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取之前选中的路径在jtfa中
String filePath = jtfa.getText();
File file = new File(filePath);
delTxtAll(file);
tableClearData();
findFileAll(file);
}
});
/**
* 删除所有小于5KB文件的点击事件
*/
jbd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取之前选中的路径在jtfa中
String filePath = jtfa.getText();
File file = new File(filePath);
del5KBAll(file);
tableClearData();
findFileAll(file);
}
});
this.setVisible(true);
}
/**
* 方法功能:封装清除上一次表格中显示的所有行
*/
public void tableClearData() {
int rowsCount = jta.getRowCount();
for (int i = 0; i < rowsCount; i++) {
dtm.removeRow(0);
}
}
/**
* 方法功能:显示某目录下的所有文件
* @param File file 文件对象
*/
public void findFileAll(File file) {
//判断是文件还是文件夹
if(file.isFile()) {//文件
//文件路径
String filePath = file.getPath();
//文件名
String fileName = file.getName();
//文件扩展名
String zh = "";
int index = fileName.lastIndexOf(".");
if(index!=-1) {//说明这个文件名有"."
zh = fileName.substring(index);
}else {//说明这个文件名没有"."
zh = "无后缀名";
}
// System.out.println("文件的后缀有: "+zh);
//文件大小(Byte)
long len = file.length();
double fileLength = len/1024.0;
//文件的最后修改时间
long lastModified = file.lastModified();
Date date = new Date(lastModified);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mydate = sdf.format(date);
//新建Vector
Vector<Object> vc = new Vector<Object>();
vc.add(filePath);
vc.add(fileName);
vc.add(zh);
vc.add(fileLength);
vc.add(mydate);
dtm.addRow(vc);
}else if(file.isDirectory()) {//是文件夹
//通过listFile方法得到该文件夹下的所有文件信息(文件夹+文件)
File[] listFiles = file.listFiles();
//系统文件判断排除
if(listFiles == null) {
return;
}
//遍历
for (File file2 : listFiles) {
//调用方法本身重新验证每个file2就是是文件还是文件夹
findFileAll(file2);
}
}
}
/**
* 方法功能:删除所有txt文件
* @param args
*/
public void delTxtAll(File file) {
if(file.isFile()) {//文件
String fileName = file.getName();//获取文件名
int index = fileName.lastIndexOf(".");
if(-1!=index) {//筛选无后缀名的文件
String hz = fileName.substring(index);
if(hz.equals(".txt")) {
file.delete();
}
}
}else if(file.isDirectory()) {
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
delTxtAll(file2);
}
}
}
/**
* 方法功能:删除所有小于5KB的文件
* @param file
*/
public void del5KBAll(File file) {
if(file.isFile()) {//文件
long len = file.length();
double fileLength = len/1024.0;
if(fileLength < 5) {
file.delete();
}
}else if(file.isDirectory()) {
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
delTxtAll(file2);
}
}
}
public static void main(String[] args) {
new FileDemo();
}
}