zoukankan      html  css  js  c++  java
  • 第十四周总结

    第十四周总结

    JDBC
    Java数据库连接,(Java Database Co-
    nnectivity,简称JDBC)是Java语言中用
    程序如何来访问数据库的应用程序接口,
    提供了诸如查询和更新数据库中数据的方
    法。JDBC也是Sun Microsystems的商标
    。我们通常说的JDBC是面向关系型数据
    库的。
    JDBC驱动程序共分四种类型:
    1.JDBC-ODBC桥
    2.本地API驱动
    3.网络协议驱动
    4.本地协议驱动

    API概述
    JDBC API主要位于JDK中的java.sql包中
    (之后扩展的内容位于javax.sql包中),
    主要包括(斜体代表接口,需驱动程序提
    供者来具体实现):
    Driver Manager,Driver,Connection,
    Statement,PreparedStatement,
    CallableStatement,SQLException。

    连接方式:
    ⒈Oracle8/8i/9i数据库(thin模式)
    ⒉DB2数据库
    ⒊Sql Server7.0/2000数据库
    ⒋Sybase数据库
    ⒌Informix数据库
    ⒍MySQL数据库
    ⒎PostgreSQL数据库
    ⒏access数据库直连用ODBC的

    记事本

    package com.liao.notepad0822;
     
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    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.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
     
    public class MainUI extends JFrame {
     
    	private static final long serialVersionUID = -8533346717300013642L;
    	private JTextArea jta;
    	private JScrollPane jsp;
    	private static String name;
    	private JFileChooser jfc = new JFileChooser();
     
    	public static void main(String[] args) {
    		new MainUI().init();
    	}
     
    	// 初始化界面
    	public void init() {
    		setSize(800, 600);
    		setLocationRelativeTo(null);
    		// 设置关闭按钮动作不执行任何操作
    		setDefaultCloseOperation(0);
    		name = "新建文本文档.txt";
    		// 设置标志图案
    		ImageIcon ii = new ImageIcon("file\1.png");
    		setIconImage(ii.getImage());
    		// 设置文件名
    		setTitle(name + " - 记事本");
    		// 添加菜单栏
    		addMenu();
    		// 添加文本框
    		jta = new JTextArea();
    		// 添加滚动条
    		jsp = new JScrollPane(jta);
    		jsp.setPreferredSize(new Dimension(780, 550));
    		add(jsp, BorderLayout.CENTER);
    		setVisible(true);// 设置窗口可见
    		addWindowListener(new WindowAdapter() {
    			@Override
    			public void windowClosing(WindowEvent e) {
    				if (showSaveDialog() != JOptionPane.CANCEL_OPTION)// 若不是取消按钮,关闭程序
    					setDefaultCloseOperation(3);
    			}
    		});
    	}
     
    	// 添加菜单栏
    	private void addMenu() {
    		// 添加菜单栏
    		JMenuBar jmb = new JMenuBar();
    		// 设置菜单栏位置在顶级窗口的顶部
    		setJMenuBar(jmb);
    		// 菜单栏菜单
    		JMenu jm_file = new JMenu("文件");
    		JMenu jm_edit = new JMenu("编辑");
    		jmb.add(jm_file);
    		jmb.add(jm_edit);
    		// 给文件菜单添加菜单项
    		JMenuItem item1 = new JMenuItem("打开");
    		JMenuItem item2 = new JMenuItem("保存");
    		jm_file.add(item1);
    		jm_file.add(item2);
     
    		// "打开"菜单项添加动作监听器
    		item1.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// 是否保存对原文件修改
    				if (showSaveDialog() == JOptionPane.CANCEL_OPTION) {// 取消按钮,则返回
    					return;
    				}
    				// 弹出一个 "Open File" 文件选择器对话框
    				int select = jfc.showOpenDialog(MainUI.this);
    				// 选择打开文件,则读写文件
    				if (select == JFileChooser.APPROVE_OPTION) {
    					jta.setText(readFile());// 写入文本框
    					jta.setCaretPosition(0);// 定位光标至行首
    				}
    			}
    		});
     
    		// “保存”菜单项添加动作监听器
    		item2.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				if (jfc.getSelectedFile() == null) {
    					createFile();//调用创建文件方法
    				} else {
    					showSaveDialog();//调用文件是否保存方法
    				}
    			}
    		});
    	}
     
    	// 读取文件
    	private String readFile() {
    		// 声明缓冲字符流变量
    		BufferedReader br = null;
    		StringBuilder sb = null;
    		try {
    			br = new BufferedReader(new FileReader(jfc.getSelectedFile()));
    			sb = new StringBuilder();// 创建缓冲字符串
    			String str;
    			int count = 0;//控制添加换行符,与原文保持一致
    			while ((str = br.readLine()) != null) {
    				if (count == 0)
    					sb.append(str);
    				if (count++ != 0)
    					sb.append("
    " + str);// 添加换行
    			}
    		} catch (FileNotFoundException e1) {
    			// 弹出“文件未找到”对话框,返回null
    			JOptionPane.showMessageDialog(null, "未找到该文件!");
    			return null;
    		} catch (IOException e1) {
    			// 弹出“文件读取异常”对话框,返回null
    			JOptionPane.showMessageDialog(null, "文件读取异常");
    			return null;
    		} finally {
    			// 关闭字符流
    			if (br != null)
    				try {
    					br.close();
    				} catch (IOException e1) {
    					e1.printStackTrace();
    				}
    		}
    		name = jfc.getSelectedFile().getName();
    		setTitle(name + " - 记事本");//设置文件名
    		return sb.toString();
    	}
     
    	// 保存对话框
    	private int showSaveDialog() {
    		int select = 0;
    		// 判断文本框是否为空
    		if (!jta.getText().equals("")) {
    			// 判断文件是否为空
    			if (jfc.getSelectedFile() == null) {
    				select = JOptionPane.showConfirmDialog(MainUI.this, "是否保存修改?");
    				if (select == JOptionPane.YES_OPTION) {
    					createFile();//文件不存在,则创建文件
    				}
    			} else {
    				if (!isSaved()) {// 文件未保存
    					select = JOptionPane.showConfirmDialog(MainUI.this, "是否保存修改?");
    					if (select == JOptionPane.YES_OPTION) {
    						saveFile(jfc.getSelectedFile());
    					}
    				}
    			}
    		}
    		return select;// 返回选项
    	}
     
    	// 创建新文件
    	private void createFile() {
    		// String name = null;
    		File file = null;
    		// 选择保存或取消
    		if (jfc.showSaveDialog(MainUI.this) == JFileChooser.APPROVE_OPTION) {
    			file = jfc.getSelectedFile();// 获取选中的文件
    		} else {
    			return;
    		}
    		name = jfc.getName(file);// 获取输入的文件名
    		if (file.exists()) { // 若选择已有文件----询问是否要覆盖
    			int i = JOptionPane.showConfirmDialog(null, "该文件已存在,是否覆盖原文件", "确认", JOptionPane.YES_NO_OPTION);
    			if (i == JOptionPane.YES_OPTION) {
    				saveFile(file);
    			} else {
    				jfc.showSaveDialog(MainUI.this);// 重新选择
    			}
    		} else {//文件不存在,则直接保存
    			saveFile(file);
    		}
    	}
     
    	// 判断文件是否保存
    	private Boolean isSaved() {
    		// 比较内容
    		if (jta.getText().equals(readFile())) {
    			return true;
    		}
    		return false;
    	}
     
    	// 保存文件,文件不存在则创建新文件
    	private void saveFile(File file) {
    		BufferedWriter bw = null;
    		try {
    			bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
    			bw.write(jta.getText());//写入文件
    			bw.flush();
    		} catch (FileNotFoundException e1) {
    			JOptionPane.showMessageDialog(MainUI.this, "文件保存出错" + e1.getMessage());
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		} finally {
    			try {
    				if (bw != null)
    					bw.close();
    			} catch (IOException e1) {
    			}
    		}
    	}
    }
    
  • 相关阅读:
    使用 jfinal + beetl + bootstrap 实现商城展示及管理系统
    关于Node.js的__dirname,__filename,process.cwd(),./文件路径的一些坑
    canvas离屏、旋转效果实践——旋转的雪花
    走一步再走一步,揭开co的神秘面纱
    用javascript写一个emoji表情插件
    基于HTML5快速搭建TP-LINK电信拓扑设备面板
    百度地图获取规划路径信息
    devicePixelRatio 那些事儿
    怎样用JavaScript和HTML5 Canvas绘制图表
    首次写iPad布局感想(H5)
  • 原文地址:https://www.cnblogs.com/9557yxl/p/11960720.html
Copyright © 2011-2022 走看看