记事本代码:
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语句 |