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

    1.JDBC:

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。是Java访问数据库的标准规范

    2.JDBC的主要操作类及接口:

    java.sql.DriverManager   用于管理JDBC驱动程序

    java.sql.Connection       用于建立与特定数据库的连接,一个连接就是一个会话,建立连接后便可以执行SQL语句和获得检索结果。

    java.sal.Statement        一个Statement对象用于执行静态SQL语句,并获得语句执行后产生的结果。

    java.sql.PreparedStatement    创建一个可以编译的SQL语句对象,给对象可以被多次运行,以提高执行效率,改接口是Statement的子接口。

    java.sql.ResultSet        用于创建表示SQL语句检索结果集,用户通过结果集完成对数据库的访问。

    java.sql.Driver             定义一个数据库的驱动接口。

    3.JDBC的操作步骤:

     加载 jdbc 驱动程序
    拼接 jdbc 需要连接的 url
     创建数据库的连接
     创建一个Statement
     执行SQL语句
     处理执行完SQL之后的结果

    关闭使用的JDBC对象

    实验:记事本

    实验代码:


    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) {
       }
      }
     }
    }
  • 相关阅读:
    Asterisk 通道变量
    TS流 PS流 ES流
    VLC源码分析(二)
    H264 TS/ES
    Linux 下TCP连接关闭情况分析
    linux局域网内磁盘映射
    阻塞与非阻塞个人小结
    TCP的状态迁移图
    H.264 RTP payload 格式
    c#读取文件,重新建立文件,把读取的数据放入到文件中去
  • 原文地址:https://www.cnblogs.com/pzw200915/p/11960335.html
Copyright © 2011-2022 走看看