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

    本周我们主要学习了 jdbc 以及 MySQl数据库
    一、JDBC
    概述:JDBC是Java提供的一套数据库操作标准,各个数据库生产商要按照此标准生产数据库驱动,而开发者只需要掌握核心的接口与类即可通过SQL实现任意的数据库操作。
    二、JDBC驱动分类:
    (1)JDBC-ODBC桥驱动
    JDBC-ODBC是Sun提供的一个标准的JDBC操作,直接利用微软的ODBC进行数据库的链接操作,但是这种操作性能低,所以通常情况下是不推荐使用这种方式进行操作的。
    (ODBC(Open Database Connectivity,开放数据库的连接)是微软公司提供的一套数据库的编程接口,Sun的JDBC实现实际上也是模仿了ODBC的设计)
    (2)JDBC本地驱动
    直接使用各个数据库生产商提供JDBC驱动程序,但是因为其智能应用在特定的数据库上,会丧失掉程序的可移植性,但是这样操作的性能较高
    (3)JDBC网络驱动
    这种驱动程序将JDBC转化为与DBMS无关的网络协议,然后又被某个服务器转化为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到各种不同的数据库上。所以用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。
    (4)本地协议纯JDBC驱动
    这种类型的驱动程序将JDBC调用直接装华为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。
    三、JDBC的主要操作及接口
    序号 类及接口 描述
    1 java.sql.Drivermanager 用于管理JDBC驱动程式
    2 java.sql.Connection 用于建立与特定数据库的连接,一个链接就是一个对话,建立连接后便可以执行SQL语句和获得检查后果
    3 java.sql.Statemeng 一个Statemeng对象用于执行静态SQL语句,并获得语句执行后产生的后果
    4 java.sql.PreparedStatemeng 创建一个可以编译的SQL语句对象,该对象可以被多次运行,以提高执行效率,该接口是Statement的子接口
    5 java.sql.Resultet 用于创建表示SQl语句检索结果的结果集,用户通过结果集完成都数据库的访问
    6 java.sql.Date 该类是标准java.util.Date的一个子集,用于表示与SQL DATE相同的日期类型,该日期不包括时间
    7 java.sql.Timestamp 标准java.util.Date类的扩展,用于表示SQL时间戳,并增加了一个能表示ns(纳秒)的时间域
    8 java.sql.CallableStatement 用于执行SQL存储过程
    9 java.sql.DatabaseMetaDate 与java.sql.ResultSetMetaData一个用于访问数据库夫人元信息
    10 java,sql.Driver 定义一个数据库驱动程序的接口
    11 java.sql.DateTruncation 在JDBC遇到数据载断的异常时,报告一个警告
    12 java.sql.DriverPropertyInfo 高级程序设计人员通过Driver Property Info与Driver进行交流可使用getDriverPropertyINfo获取或提供驱动程序的信息
    13 java. sql.Time 该类是标准java.util.date的一个子集,用于表示时、分、秒
    14 java.sql.SQlExcepion 对数据库访问时产生的错误的描述信息
    15 java.sql.Types 定义了表示SQL类型的常量
    在JDBC的基本操作中最常用的类和接口就是DriverManager Connection Statement Result PreparedStatement

    简单记事本的编写
    import java.awt.BorderLayout;
    import java.awt.Container;
    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 java.io.InputStream;
    import java.io.OutputStream;
    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 记事本 extends JFrame implements ActionListener {
    JTextArea inputText;
    JScrollPane pane;
    public 记事本() {
    this.setTitle("Notepad");
    this.setSize(600, 400);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

        Container contentPane = this.getContentPane();
        contentPane.setLayout(new BorderLayout(5,1));
        
        JMenuBar menuBar = new JMenuBar();
        JMenu menu = new JMenu("File");
        
        JMenuItem open=new JMenuItem("打开...");
        open.addActionListener(this);
        menu.add(open);
        JMenuItem save=new JMenuItem("存盘");
        save.addActionListener(this);
        menu.add(save);
        menu.addSeparator(); 
        JMenuItem item = new JMenuItem("退出");
        menu.add(item);
        item.addActionListener(this);
    
        menuBar.add(menu);
        
        this.setJMenuBar(menuBar);
        inputText=new JTextArea(100, 100);
        pane=new JScrollPane(inputText);
        contentPane.add(pane);
    }
    
    public static void main(String[] args) {
        JFrame frame = new 记事本();
        frame.setVisible(true);
    }
    
    @Override
    public void actionPerformed(ActionEvent event) {
        String cmd = event.getActionCommand();
        if ("退出".equals(cmd)) {
            this.dispose();
        }
        if ("打开...".equals(cmd)) {
            File srcFile=null;
            JFileChooser fileChooser=new JFileChooser();
            int res=fileChooser.showOpenDialog(null);
            if(res==JFileChooser.APPROVE_OPTION) {
                srcFile=fileChooser.getSelectedFile();
            }
            try {
                InputStream is = new FileInputStream(srcFile);
                byte[] buffer = new byte[8*1024];
                int len;
                while ((len = is.read(buffer)) != -1) {
                    String text = new String(buffer, 0, len,"UTF-8");
                    inputText.append(text);
                }
                is.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if ("存盘".equals(cmd)) {
            File destFile=null;
            JFileChooser fileChooser=new JFileChooser();
            int res = fileChooser.showSaveDialog(null);
            if (res == JFileChooser.APPROVE_OPTION) {
                destFile = fileChooser.getSelectedFile();
            } else {
                System.out.println("用户取消");
                return;
            }
            try {
                OutputStream os = new FileOutputStream(destFile);
                os.write(inputText.getText().getBytes("UTF-8"));
                os.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    }
    运行结果

    总结 题目难 要室友同学帮助

  • 相关阅读:
    MyBatis 基础搭建及架构概述
    Effective Java
    Effective Java
    Spring注解?啥玩意?
    Spring 中的Null-Safety
    Spring Resource框架体系介绍
    内部类的用法
    一文了解ConfigurationConditon接口
    详解状态压缩动态规划算法
    【硬核】使用替罪羊树实现KD-Tree的增删改查
  • 原文地址:https://www.cnblogs.com/xiaomouren/p/11953829.html
Copyright © 2011-2022 走看看