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

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 记事本();
    }
}


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

原文地址:https://www.cnblogs.com/liualiu/p/11958254.html