代码改变世界

第十四周课程总结&实验报告(简单记事本的实现)

2019-11-29 14:53  小小乌龟君  阅读(213)  评论(1编辑  收藏  举报

课程总结

JDBC一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

spring提供一致的API来简化JDBC编程-spring jdbc。我们只需要声明SQL、调用合适的Spring JDBC框架API、处理结果集。事务由Spring管理,并将JDBC受查异常转换为Spring一致的非受查异常。

JDBC API支持用于数据库访问的两层和三层处理模型,但通常,JDBC体系结构由两层组成:

JDBC API:提供应用程序到JDBC管理器连接。
JDBC驱动程序API:支持JDBC管理器到驱动程序连接。

DriverManager:此类管理数据库驱动程序列表。 使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序进行匹配。在JDBC下识别某个子协议的第一个驱动程序将用于建立数据库连接。
Driver:此接口处理与数据库服务器的通信。我们很少会直接与Driver对象进行交互。 但会使用DriverManager对象来管理这种类型的对象。 它还提取与使用Driver对象相关的信息。
Connection:此接口具有用于联系数据库的所有方法。 连接(Connection)对象表示通信上下文,即,与数据库的所有通信仅通过连接对象。
Statement:使用从此接口创建的对象将SQL语句提交到数据库。 除了执行存储过程之外,一些派生接口还接受参数。
ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。 它作为一个迭代器并可移动ResultSet对象查询的数据。
SQLException:此类处理数据库应用程序中发生的任何错误。

简易记事本

package zh;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class TextPad implements ActionListener {
	
	JFrame frame;
	JMenuBar bar;
	JMenu fileMenu,editMenu;
	JMenuItem newItem,openItem,saveItem,closeItem;
	ImageIcon  newIcon,openIcon,saveIcon,closeIcon;
	JScrollPane scroll;
	JTextArea area;
	JFileChooser chooser;
	File file;
	
	public TextPad(){
		frame = new JFrame("记事本");
		bar = new JMenuBar();
		fileMenu = new JMenu("文件");
		editMenu = new JMenu("编辑");
		newIcon = new ImageIcon("d:" + File.separator + "记事本" + File.separator + "新建.png");
		openIcon = new ImageIcon("d:" + File.separator + "记事本" + File.separator +"打开.png");
		saveIcon = new ImageIcon("d:" + File.separator + "记事本" + File.separator +"保存.png");
		closeIcon = new ImageIcon("d:" + File.separator + "记事本" + File.separator +"关闭.png");
		area = new JTextArea();
		scroll = new JScrollPane(area);
		
		newItem = new JMenuItem("新建", newIcon);
		openItem = new JMenuItem("打开", openIcon);
		saveItem = new JMenuItem("另存为", saveIcon);
		closeItem = new JMenuItem("关闭", closeIcon);
		
		//加上监听器
		newItem.addActionListener(this);
		openItem.addActionListener(this);
		saveItem.addActionListener(this);
		closeItem.addActionListener(this);
		
		fileMenu.add(newItem);
		fileMenu.add(openItem);
		fileMenu.add(saveItem);
		fileMenu.add(closeItem);
		
		
		
		bar.add(fileMenu);
		bar.add(editMenu);
		
		
		frame.setJMenuBar(bar);
		frame.add(scroll);
		frame.setSize(400,300);
		frame.setVisible(true);
	}
	


	public void actionPerformed(ActionEvent event) {
		Object obj = event.getSource();
		if(obj instanceof JMenuItem ) {
			JMenuItem item = (JMenuItem)obj;
            if(item == newItem) {
                new TextPad();
		}else if(item == openItem) {
            chooser=new JFileChooser();
            chooser.showOpenDialog(null);
            file=chooser.getSelectedFile();
            try {
               FileInputStream fis=new FileInputStream(file);
               byte[] b=new byte[fis.available()];
               try {
                   fis.read();
                   area.append(new String(b));
                   fis.close();
               } catch (IOException e1) {
                   e1.printStackTrace();
               }
           } catch (FileNotFoundException e1) {
               e1.printStackTrace();
           } catch (IOException e2) {
               e2.printStackTrace();
           }
		}else if(item == saveItem) {
               chooser = new JFileChooser();
               chooser.showSaveDialog(null);
               file = chooser.getSelectedFile();
               
                   try {
                       if(!file.exists()) {
                          file.createNewFile();
                       }
                       FileOutputStream fos = new FileOutputStream(file);
                       byte[] b = area.getText().getBytes();
                       fos.write(b);
                       fos.close();
                   } catch (IOException e1) {
                       e1.printStackTrace();
                   }
               
           }else if(item == closeItem){
               System.exit(1);
           }
		}
	}
}
package zh;

public abstract class Test {

    public static void main(String[] args) {
        new TextPad();
    }

}