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

Posted lcbxhda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十四周课程总结&实验报告(简单记事本的实现)相关的知识,希望对你有一定的参考价值。

第十四周课程总结

一、JDBC

概述:JDBCJava提供的一套数据库操作标准,各个数据库生产商要按照此标准生产数据库驱动,而开发者只需要掌握核心的接口即可通过SQL实现任意的数据库操作。

简介:JDBC提供了一种与平台无关的用于执行SQL语句的标准Java API,可以方便的实现多种关系型数据库的同意操作,它由一组用Java语句编写的类和接口组成。

二、JDBC驱动分类

1)JDBC-ODBC桥驱动:

JDBC-ODBCSun提供的一个标准的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.Statement 一个Statement对象用于执行静态SQL语句,并获得语句执行后产生的结果
4 java.sql.PreparedStatement 创建一个可以编译的SQL语句对象,该对象可以被多次运行,以提高执行的效率,该接口是Statement的子接口
5 java.sql.ResultSet 用于创建表示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.DatabaseMetaData java.sql.ResultSetMetaData一同访问数据库的元信息
10 java.sql.Driver 定义一个数据库驱动程序的接口
11 java.sql.DataTruncation JDBC遇到数据截断的异常时,报告一个警告或产生一个异常
12 java.sql.DriverPropertyInfo 通过DriverPropertyInfoDriver进行交流,可使用getDriverPropertyInfo获取或提供驱动程序的信息
13 java.sql.Time 该类是标准java.util.Date的一个子集,用于表示时、分、秒
14 java.sql.SQLException 对数据库访问时产生的错误的描述信息
15 java.sql.SQLWarning 对数据库访问时产生的警告的描述信息
16 java.sql.Types 定义了表示SQL类型的常量

其中在JDBC的基本操作中最常用的类和接口就是DriverManagerConnectionStatementResultPreparedStatement

四、mysql数据库

简介:MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。

五、MySQL常用命令

连接MySQL数据库

mysql -u 用户名 -p 密码

创建数据库

CREATE DATABASE 数据库名称

删除数据库

DROP DATABASE 数据库名称

使用数据库

USE 数据库名称

创建数据库表

CREATE TABLE 表名称(
    字段名称1    字段类型 [DEFAULT 默认值][约束]
    字段名称2    字段类型 [DEFAULT 默认值][约束]
    ...,
);

删除数据库表

DROP TABLE 表名称;

查看表结构

DESC 表名称;

查看一个数据库的全部表

SHOW TABLES;

查看全部数据库

SHOW DATABASES;

自己昨天也尝试着去连接数据库、使用数据库,就是很容易把数据库表和数据库的操作指令搞混,如下图:

技术图片

实验报告

实验代码

package diyishiba;
import java.awt.*;
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 javax.swing.*;
public class Jsb implements ActionListener{
    JFrame frame;
    JTextArea area;
    JMenu menu1,menu2,menu3;
    JMenuBar bar;
    JMenuItem item1,item2,item3,item4,item5;
    JFileChooser filec;
    File file;
    public Jsb(){
        frame=new JFrame("记事本");
        area=new JTextArea();
        menu1=new JMenu("文件");
        menu2=new JMenu("编辑");
        menu3=new JMenu("格式");
        bar=new JMenuBar();
        item1=new JMenuItem("新建(N)");
        item2=new JMenuItem("打开(O)");
        item3=new JMenuItem("保存(S)");
        item4=new JMenuItem("打印(P)");
        item5=new JMenuItem("退出(X)");
        filec=new JFileChooser();

        area.setEditable(true);
        
        item1.setMnemonic('N');
        item2.setMnemonic('O');
        item3.setMnemonic('S');
        item4.setMnemonic('P');
        item5.setMnemonic('X');
        
        item1.setAccelerator(KeyStroke.getKeyStroke('N', Event.CTRL_MASK));
        item2.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
        item3.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
        item4.setAccelerator(KeyStroke.getKeyStroke('P', Event.CTRL_MASK));
        item5.setAccelerator(KeyStroke.getKeyStroke('X', Event.CTRL_MASK));
        
        item1.addActionListener(this);
        item2.addActionListener(this);
        item3.addActionListener(this);
        item4.addActionListener(this);
        item5.addActionListener(this);
        
        menu1.add(item1);
        menu1.add(item2);
        menu1.add(item3);
        menu1.add(item4);
        menu1.add(item5);
        
        bar.add(menu1);
        bar.add(menu2);
        bar.add(menu3);
        
        frame.getContentPane().add(new JScrollPane(area));
        frame.setJMenuBar(bar);
        frame.setSize(400, 300);
        frame.setLocation(600, 20);
        frame.setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {
        Object obj=e.getSource();
        JMenuItem item = null;
        if(obj instanceof JMenuItem){
            item=(JMenuItem) obj;
        }
        if(item==item1){
            new Jsb();
        }
        else if(item==item2){
            filec.showSaveDialog(null);
            file=filec.getSelectedFile();
            if(file!=null) {
                try {
                    FileInputStream input=new FileInputStream(file);
                    byte[] b=new byte[(int)file.length()];
                    input.read(b);
                    area.append(new String(b));
                    input.close();
                } catch (FileNotFoundException e1) {
                    e1.printStackTrace();
                } catch (IOException e1) {
                    e1.printStackTrace();
                    JOptionPane.showMessageDialog(null,"文件读取出错");
                } 
            }
        }
        else if(item==item3){
            filec.showSaveDialog(null);
            file=filec.getSelectedFile();
            try {
                FileOutputStream out=new FileOutputStream(file);
                out.write(area.getText().getBytes());
                out.close();
            } catch (FileNotFoundException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
        else if(item==item4) {
            JOptionPane.showMessageDialog(null,"当前设备没有连接打印机!");
        }
        else if(item==item5){
            System.exit(0);
        }
        
    }
}

测试类

package diyishiba;

public class Test13 {

    public static void main(String[] args) {
        new Jsb();
    }

}

运行截图:

技术图片

新建:

技术图片

打开:

技术图片

保存:

技术图片

打印:

技术图片

关闭:

技术图片

对于这次实验,因为上课老师讲过,再加上我也拍了些核心代码,所以写的并不是很困难,就是理解这些代码花了很长时间。

以上是关于第十四周课程总结&实验报告(简单记事本的实现)的主要内容,如果未能解决你的问题,请参考以下文章

第十四周课程总结&实验报告

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

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

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

第十四周课程总结&实验报告

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