第十四周课程总结&实验报告(简单记事本的实现)
一、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();
}
}
结果截图