记事本代码:

package Demo;

import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.JFileChooser;
public class Test5 {
    public static void main(String[] args) {
    JFrame jframe;
    JMenu jmenu1,jmenu2;
    JMenuBar jmenubar;
    JMenuItem jmenuitem1,jmenuitem2,jmenuitem3,jmenuitem4;
    JTextArea area;
    JFileChooser jfc;
    //JLabel label;
    
    jframe=new JFrame("记事本");
    jmenu1=new JMenu("文件");
    jmenu2=new JMenu("编辑");
    jmenubar=new JMenuBar();
    jmenuitem1=new JMenuItem("新建(N)");
    jmenuitem2=new JMenuItem("打开 (S)");
    jmenuitem3=new JMenuItem("另存为(A)");
    jmenuitem4=new JMenuItem("退出(X)");
    //label=new JLabel("现在没有打开的文件");
    jfc=new JFileChooser();
    area=new JTextArea(8,10);
    area.setEditable(true);
    jframe.getContentPane().add(new JScrollPane(area));
        
    jmenuitem1.setMnemonic(KeyEvent.VK_N);
    jmenuitem2.setMnemonic(KeyEvent.VK_S);
    jmenuitem3.setMnemonic(KeyEvent.VK_A);
    jmenuitem4.setMnemonic(KeyEvent.VK_X);
        
    jmenuitem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
    jmenuitem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
    jmenuitem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
    jmenuitem4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
    
        
    jmenubar.add(jmenu1);
    jmenubar.add(jmenu2);
    jmenu1.add(jmenuitem1);
    jmenu1.add(jmenuitem2);
    jmenu1.add(jmenuitem3);
    jmenu1.add(jmenuitem4);
    //jframe.setBounds();
    jframe.setJMenuBar(jmenubar);
    jframe.setSize(400,400);
    jframe.setLocation(400,400);
    jframe.setVisible(true);
    jmenuitem1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
             area.setText("");
        }
    });
    jmenuitem3.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            jfc.showOpenDialog(null);
            File file=jfc.getSelectedFile();
            try {
                if(!file.exists())
                  file.createNewFile();
                
                FileOutputStream fos = new FileOutputStream(file);
                byte[] b = area.getText().getBytes();
                fos.write(b);
                fos.close();
            } catch (IOException ex) {                      
               ex.printStackTrace();
           }
    }
    });
    jmenuitem2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            jfc.showOpenDialog(null);
            File file=jfc.getSelectedFile();
            try {
               FileInputStream fis = new FileInputStream(file);
               byte b[] = new byte[fis.available()];
               fis.read(b);
               area.append(new String(b));
               fis.close();
           } 
           catch(FileNotFoundException ex) {
                   ex.printStackTrace();
           }catch (IOException ex) {
               ex.printStackTrace();
           } 
    }});
    jmenuitem4.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    });
    }
}

截图:

学习总结:

一,JDBC概述:

1,JDBC简介:

作用:提供了一种与平台无关的用于执行SQL语句的标准Java API。

原理:在JBDC中提供的是一套标准的接口,各个支持Java的数据库生产商只要按照此接口提供相应的实现,就可以使用JBDC进行操作。

2,JDBC常见驱动分类:

1),JDBC-ODBC桥驱动

2),JDBC本地驱动

3),JDBC网络驱动

4),本地协议纯JDBC驱动

3,JDBC的常见操作及接口

类或接口 描述
java.sql.DriveManager 用于管理JDBC驱动装置
java.sql.Connection 用于建立与特定数据库的连接,一个连接就是一个会话,建立连接后便可以执行SQL语句和获得检索结果
java.sql.Statement 一个Statement对象用于执行静态SQL语句,并获得语句执行后产生的结果
java.sql.PreparedStatement 创建一个可以编译的SQL语句对象,该对象可以被多次运行,以提高执行的效率,该接口是Statement的子接口
java.sql.ResultSet 用于创建表示SQL语句检索结果的结果集,用户通过结果集完成对数据库的访问
java.sql.CallabelStatement 用于执行SQL存储过程
java.sql.Driver 定义一个数据库驱动程序的接口

二,MySQL数据库

MySQL常用命令

连接数据库:

mysql -u 用户名 -p 密码

创建数据库:

创建数据库:CREATE DATABASE 数据库名称;

删除数据库:OROP DATABASE 数据库名称;

使用数据库:

USE 数据库名称;

创建数据库表:

CREATE TABLE 表名称{

      字段名称 1  字段类型 [DEFAUIL 默认值][约束],

      ...............

      字段名称 n  字段类型 [DEFAUIL 默认值][约束]

}

删除数据表:

DROP TABLE 表名称;

查看表结构:

DESC 表名称;

查看数据库信息:

查看全部数据库:SHOW DATABASES;

查看一个数据表的全部表:SHOW TABLLES;

三,JDBC操作步骤

1,连接及关闭数据库

使用DriverManager类连接数据库

DriverManager类的常用方法:

方法 类型 描述
public static Connection getConnection(String url)throws SQLException 普通 通过连接地址连接数据库
public static Connection getConnection(String url,String user,String password) throws SQLException 普通 通过连接地址数据库,同时输入用户名和密码

在DriverManager中,提供的主要操作就是得到一个数据库的连接,getConnection()方法就取得连接对象,此方法的返回类型是Connection对象,不管使用哪种方式连接,都必须提供一个数据库的连接地址。

MySQL数据库的连接地址格式:

jdbc:mysql://IP 地址:端口号/数据库名称

JBDC虽然在各个数据库的连接地址有差异,但都有三部分组成:

1)jdbc协议:JBDC URL中的协议总是jdbc。

2)子协议:驱动程序名或数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称,如:MySQL。

3)子名称:一种标识数据库的方法。必须遵守"//主机名:端口/子协议"的标准URL命名约定。如://localhost:3306/mldn。

所有的数据库操作多从Connection接口开始。

Connection接口的常用方法:

方法 类型 描述
Statement createStatement() throws SQLException 普通 创建一个Statement对象
Statement creatStatement(int resultSetType,int resultSetConcurrency) throws SQLException   创建一个Statement对象,该对象将发生成具有给定类型和并发生性的ResultSet对象
PreparedStatement prepareStatement(String sql) throws SQLException   创建一个PreparedStatement类型的对象
PreparedStatement prepareStatement(String sql,int resultSetType,int resultSetConcurrency) throws SQLException   创建一个PreparedStatement对象,该对象将生成具有给定类型和并发性的ResultSet对象
CallableStatement prepareCall(String sql) throws SQLException   创建一个CallableStatement 对象,此对象专门用于调用数据库的存储过程
CallbelStatement preparaCall(String sql,int reusltSetType,int resultSetConcurrency) throws SQLException   创建一个CallableStatement 对象,该对象将生成具有给定类型和并发性的ResultSet对象
DatabaseMetaData getMetaData() throws SQLException   得到数据库的是元数据
boolean getAutoCommit() throws SQLException   设置数据库的自动提交,与事务有关
Savepoint setSavepoint() throws SQLException   判断数据库是否可以自动提交,与事务有关
Savepoint setSavepoint(String name) throws SQLException   设置数据库的回复点,与事务有关
void rollback() throws SQLException   为数据库的恢复点指定一个名字,与事务有关
void rollback(Savepoint savepoint) throws SQLException   数据库操作回滚,与事务有关
void commit() throws SQLException   数据库表回滚到指定的保存点,与事务有关
void setAutoCommit(boolean autoCommit) throws SQLException   提交操作,与事务有关
boolean isClosed() throws SQLException   判断连接是否关闭
void close() throws SQLException   关闭数据库
DatabaseMetaData getMetaData() throws SQLException   得到数据库的元数据对象

执行数据库的更新操作:

要想对数据库进行,需使用Statement接口完成,此接口可以使用Connection接口提供的creatStatement()方法实例化.

Statement接口的常用方法:

方法 类型 描述
int executeUpdate(String sql) throws SQLException 普通 执行数据库更新的SQL语句,如INSERT,UPDATE,DELETE等语句,返回更新的记录数
ResultSet executeQuery(String sql) throws SQLException 普通 执行数据库查询操作,返回一个结果集对象
void addBatch(String sql) throws SQLException 普通 增加一个待执行的SQL语句
int[] exceuteBatch() throws SQLException 普通 批量执行SQL语句
void close() throws SQLException 普通 关闭Statement操作
boolean excecute(String sql) throws SQLException 普通 执行SQL语句