zoukankan      html  css  js  c++  java
  • 第十四周课程总结&实验报告(简单记事本的实现)

    JDBC的简介

    Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
    在实际开发中可以直接使用JDBC进行各个数据库的连接与操作,而且可以方便地向数据库中发送各种SQL命令。在JDBC中提供的是一套标准的接口,这样各个支持JAVA的数据库中生产商只要按照此接口提供相应的实现,就都可以使用JDBC进行操作,极大体现了JAVA的可移植性设计思想。

    JDBC驱动程序共分四种类型:

    类型1
    JDBC-ODBC桥
    这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。
    类型2
    本地API驱动
    这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/C++等)来访问数据库,而在驱动程序中则包含了Java代码。
    类型3
    网络协议驱动
    这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。
    类型4
    本地协议驱动
    这种类型的驱动使用Socket,直接在客户端和数据库间通信。

    JDBC的主要操作及接口

    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 定义一个数据库的驱动接口。
    java.sql.Timestamp 用于表示SQL时间戳,并增加了一个能表示ns(纳秒)的时间域
    java.sql.Data 用于表示SQL DATE相同的日期类型,该日期不包括时间
    java.sql.CallableStatement用于执行SQL存储过程
    java.sql.DatabaseMetaData与java.sql.ResultSetMetaData一同用于访问数据库的元信息
    java.sql.Types 定义表示SQL类型的常量

    MySQL数据库

    一个小型关系型数据库管理系统,开发者为MySQL AB公司。课本上有他的安装及配置。

    常用命令:连接MySQL数据库:

    mysql-u用户名 -p密码
     
    
    创建和删除数据库:
    
    创建:CREATE DATABASE  数据库名称
    删除:DROP DATABASE    数据库名称
    
     使用数据库
    USE 数据库名称
    
    创建数据库表
    CREATE TABLE表名称{
        字段名称1    字段类型【DEFAULT 默认值】【约束】
        字段名称2    字段类型【DEFAULT 默认值】【约束】
     。。。。
        字段名称3    字段类型【DEFAULT 默认值】【约束】
    }
    
     删除数据库表
    
    DROP TABLE 表名称
    查看表结构
    
    DESC  表名称
    
    查看数据库信息
    
    查看全部数据库: SHOW DATABASES;
    
    查看一个数据库的全部表:SHOW TABLES;
    

    简单记事本实现

    package 简单记事本实现;
    
    import javax.swing.*;
    
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    
    import static javax.swing.KeyStroke.*;
    
    public class 记事本  implements ActionListener {
        JFrame frame;
        JMenuBar bar;
        JMenu fileMenu, editMenu,formatMenu,viewMenu,helpMenu;
        JMenuItem newItem, openItem, saveItem, closeItem;
        ImageIcon newIcon, openIcon, saveIcon, closeIcon;
        JScrollPane scroll;
        JTextArea area;
        JFileChooser chooser;
        File file;
    
    
        public 记事本() {
        	 frame = new JFrame("记事本");
            bar = new JMenuBar();
            fileMenu = new JMenu("文件(F)");
            editMenu = new JMenu("编辑(E)");
            formatMenu= new JMenu("格式(O)");
            viewMenu=new JMenu("查看(V)");
            helpMenu= new JMenu("帮助(H)");
            newIcon=new ImageIcon("d:"+File.separator+"记事本图片"+File.separator+"新建.jpg");
            openIcon=new ImageIcon("d:"+File.separator+"记事本图片"+File.separator+"打开.jfif");
            saveIcon=new ImageIcon("d:"+File.separator+"记事本图片"+File.separator+"保存.jpg");
            closeIcon=new ImageIcon("d:"+File.separator+"记事本图片"+File.separator+"关闭.jfif");
            newItem = new JMenuItem("新建(N)", newIcon);
            openItem = new JMenuItem("打开(O)", openIcon);
            saveItem = new JMenuItem("保存(A)", saveIcon);
            closeItem = new JMenuItem("关闭(X)", closeIcon);
            area = new JTextArea();
            scroll = new JScrollPane(area);
    
            newItem.setMnemonic(KeyEvent.VK_N);
            openItem.setMnemonic(KeyEvent.VK_O);
            saveItem.setMnemonic(KeyEvent.VK_A);
            closeItem.setMnemonic(KeyEvent.VK_X);
    
            newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
            openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
            saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));
            closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));
    
            fileMenu.add(newItem);
            fileMenu.add(openItem);
            fileMenu.add(saveItem);
            fileMenu.addSeparator();
            fileMenu.add(closeItem);
            newItem.addActionListener((ActionListener) this);
            openItem.addActionListener((ActionListener) this);
            saveItem.addActionListener((ActionListener) this);
            closeItem.addActionListener((ActionListener) this);
    
            bar.add(fileMenu);
            bar.add(editMenu);
            bar.add(formatMenu);
            bar.add(viewMenu);
            bar.add(helpMenu);
            frame.setJMenuBar(bar);
            frame.add(scroll);
            frame.setVisible(true);
            frame.pack();
        }
    
        public void actionPerformed(ActionEvent event) {
            Object obj = event.getSource();
            if (obj instanceof JMenuItem) {
                JMenuItem item = (JMenuItem) obj;
                //加入动作监听
                if (item == newItem) {
            new 记事本();
                }
                else if(item==openItem){
                    JFileChooser chooser=new JFileChooser();
                    chooser.showOpenDialog(null);
                    file=chooser.getSelectedFile();//返回选择的文件
                    try {
                        FileInputStream fis=new FileInputStream(file);
                        try {
                            byte[] b=new byte[fis.available()];
                            fis.read(b);
                            area.append(new String(b));
                            fis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
    
                            }
                }
                else if (item==saveItem){
                    JFileChooser chooser = new JFileChooser();
                    chooser.showSaveDialog(null);
                    file=chooser.getSelectedFile();
                    if (!file.exists()) {
                        try {
                            file.createNewFile();
                        } catch (IOException e) {
                            e.printStackTrace();
                            try {
                                FileOutputStream fos=new FileOutputStream(file);
                                byte[] b = area.getText().getBytes();
                                try {
                                    fos.write(b);
                                } catch (IOException ex) {
                                    ex.printStackTrace();
                                }
                                try {
                                    fos.close();
                                } catch (IOException ex) {
                                    ex.printStackTrace();
                                }
                            } catch (FileNotFoundException ex) {
                                ex.printStackTrace();
                            }
                        }
                    }
                        }
                
                
                else  if(item==closeItem){
                    System.exit(1);
                }
                    }
                }
            }
    package 简单记事本实现;
    
    
    public class Test9 {
        public static void main(String[] args) {
           new 记事本();
        }
    }
    
    


    我觉得不美观的就是小图标搞得有点大,哈哈哈。

  • 相关阅读:
    python三大神器之virtualenv pip, virtualenv, fabric通称为pythoner的三大神器。
    pip使用国内镜像,豆瓣、清华
    pip国内源
    Android原生(Native)C开发之四:SDL移植笔记
    libcurl使用easy模式阻塞卡死等问题的完美解决
    linux 自定义信号
    ubuntu 12.04安装telnet和ssh服务
    libcurl with telnet
    ubuntu使用ssh登入不执行.bashrc解决方法
    pthread_kill
  • 原文地址:https://www.cnblogs.com/liualiu/p/11958254.html
Copyright © 2011-2022 走看看