第十四周课程总结&实验报告(简单记事本的实现)
一、JDBC概述
1.JDBC简介
(1)JDBC是JAVA提供的一套数据库操作标准,各个数据库生产商要按照此标准生产数据库驱动,而开发者只需要掌握核心的接口与类即可通过SQL实现任意的数据库操作
(2)JDBC提供了一种与平台无关的用于执行SQL语句的标准Java API,可以方便地实现多种关系型数据库的统一操作,它由一组用Java语言编写的类和接口组成
2.JDBC驱动分类
(1)JDBC-ODBC桥驱动

(2)JDBC连接

(3)JDBC网络驱动
这种驱动程序将JDBC转换为与DBMS无关的网络协议,然后又被某个服务器转换为一种DBMS协议。
(4)本地协议纯JDBC驱动
这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。
3.JDBC的主要操作类及接口
| 类及接口 | 描述 | 
| java.sql.DriverManager | 用于管理JDBC驱动程序 | 
| 
 java.sql.Connection  | 
用于建立与特定数据库的连接,一个连接就是一个会话,建立连接后便可以执行SQL语句和获得检索结果 | 
| java.sql.Statement | 一个Statement对象用于执行静态SQL语句,并获得语句执行后的结果 | 
| java.sql.PreparedStatement | 创建一个可以编译的SQL语句对象,该对象可以被多次运行,以提高执行的效率,该接口是Statement的子接口 | 
| java.sql.ResultSet | 用于创建表示SQL语句检索结果的结果集,用户通过结果集完成对数据库的访问 | 
| java.sql.Date | 该类是标准java.util.Date的一个子集,用于表示与SQL DATE相同的日期类型,该日期不包括时间 | 
| java.sql.Timestamp | 标准java.util.Date类的扩展,用于表示SQL时间戳,并增加了一个能表示ns的时间域 | 
| java.sql.CallableStatement | 用于执行SQL存储过程 | 
| java.sql.DatabaseMetaData | 与java.sql.ResultSetMetaData一同用于访问数据库的元信息 | 
| java.sql.Driver | 定义一个数据库驱动程序的接口 | 
| java.sql.DataTruncation | 在JDBC遇到数据截断的异常时,报告一个警告(读数据时)或产生一个异常(写数据时) | 
| java.sql.DriverPropertyInfo | 高级程序设计人员通过DriverPropertyInfo与Driver进行交流,可使用getDriverPropertyInfo获取或提供驱动程序的信息 | 
| java.sql.Time | 该类是标准java.util.Date的一个子集,用于表示时、分、秒 | 
| java.sql.SQLException | 对数据库访问时产生的错误的描述信息 | 
| java.sql.SQLWarning | 对数据库访问时产生的警告的描述信息 | 
| java.sql.Types | 定义了表示SQL类型的常量 | 
二、MySQL数据库
1.MySQL简介
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。
2.MySQL安装及配置
3.MySQL常用命令
(1)连接MySQL数据库
```
mysql -u用户名 -p密码
```
(2)创建数据库
```
创建数据库:CREATE DATABASE 数据库名称;
删除数据库:DROP DATABASE 数据库名称;
```
(3)使用数据库
```
USE 数据库名称;
```
(4)创建数据库表
```
CREATE TABLE 表名称(
字段名称1 字段类型 [DEFAULT 默认值][约束],
字段名称2 字段类型 [DEFAULT 默认值][约束],
……
字段名称n 字段类型 [DEFAULT 默认值][约束]
);
```
(5)创建数据库表
```
DROP TABLE 表名称;
```
(6)查看表结构
```
DESC 表名称;
```
(7)查看数据库信息
```
查看全部数据库: SHOW DATABASES;
查看一个数据库的全部表: SHOW TABLES;
```
实验报告
package test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.*;
import javax.swing.*;
public class Jishiben implements ActionListener{
    JFrame frame;
    JTextArea jta;
    File file1;
    JMenuBar menubar;
    JMenu menu;
    JMenuItem newitem;
    JMenuItem openitem;
    JMenuItem closeitem;
    JMenuItem saveitem;
    JScrollPane scroll;
    JFileChooser jfc;
    public Jishiben() {
        frame=new JFrame("记事本");
        jta=new JTextArea(10,4);
        jta.setEditable(true);
        scroll=new JScrollPane(jta,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        
        menubar=new JMenuBar();
        menu=new JMenu("文件");
        newitem=new JMenuItem("新建");
        openitem=new JMenuItem("打开");
        closeitem=new JMenuItem("关闭");
        saveitem=new JMenuItem("另存为");
        
        newitem.setMnemonic(KeyEvent.VK_N);
        openitem.setMnemonic(KeyEvent.VK_O);
        closeitem.setMnemonic('c');
        saveitem.setMnemonic('s');
        
        newitem.setAccelerator(KeyStroke.getKeyStroke('N',java.awt.Event.CTRL_MASK));
        openitem.setAccelerator(KeyStroke.getKeyStroke('O',java.awt.Event.CTRL_MASK));
        closeitem.setAccelerator(KeyStroke.getKeyStroke('C',java.awt.Event.CTRL_MASK));
        saveitem.setAccelerator(KeyStroke.getKeyStroke('S',java.awt.Event.CTRL_MASK));
        
        newitem.addActionListener(this);
        openitem.addActionListener(this);
        closeitem.addActionListener(this);
        saveitem.addActionListener(this);
        
        menu.add(newitem);
        menu.add(openitem);
        menu.add(closeitem);
        menu.add(saveitem);
        
        menubar.add(menu);
        
        frame.setJMenuBar(menubar);
        frame.add(scroll);
        frame.setSize(550,400);
        frame.setLocation(460,180);
        frame.setVisible(true);
        
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() instanceof JMenuItem) {
            if(e.getSource()==newitem) {
                new Jishiben();
            }
            else if(e.getSource()==openitem) {
                jfc=new JFileChooser();
                jfc.showOpenDialog(null);
                file1=jfc.getSelectedFile();
                try {
                    FileInputStream input=new FileInputStream(file1);
                    byte b1[]=new byte[(int) file1.length()];
                    try {
                        input.read(b1);
                        String str=new String(b1);
                        jta.append(str);
                        input.close();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                } catch (FileNotFoundException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
            else if(e.getSource()==closeitem) {
                System.exit(1);
            }
            else if(e.getSource()==saveitem) {
                jfc=new JFileChooser();
                jfc.showOpenDialog(null);
                file1=jfc.getSelectedFile();
                try {
                    FileOutputStream output=new FileOutputStream(file1);
                    byte b1[]=jta.getText().getBytes();
                    try {
                        output.write(b1);
                        output.close();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                } catch (FileNotFoundException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        }
        
    }
    
}
package test;
public abstract class Test {
    public static void main(String[] args) {
        new Jishiben();
    }
}
结果截图

                    
                
                
            
        
浙公网安备 33010602011771号