第十四周课程总结&实验报告(简单记事本的实现)
Posted lcbxhda
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十四周课程总结&实验报告(简单记事本的实现)相关的知识,希望对你有一定的参考价值。
第十四周课程总结
一、JDBC
概述:JDBC
是Java
提供的一套数据库操作标准,各个数据库生产商要按照此标准生产数据库驱动,而开发者只需要掌握核心的接口即可通过SQL
实现任意的数据库操作。
简介:JDBC
提供了一种与平台无关的用于执行SQL
语句的标准Java API
,可以方便的实现多种关系型数据库的同意操作,它由一组用Java
语句编写的类和接口组成。
二、JDBC
驱动分类
1)JDBC-ODBC
桥驱动:
JDBC-ODBC
是Sun
提供的一个标准的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 |
通过DriverPropertyInfo 与Driver 进行交流,可使用getDriverPropertyInfo 获取或提供驱动程序的信息 |
13 | java.sql.Time |
该类是标准java.util.Date 的一个子集,用于表示时、分、秒 |
14 | java.sql.SQLException |
对数据库访问时产生的错误的描述信息 |
15 | java.sql.SQLWarning |
对数据库访问时产生的警告的描述信息 |
16 | java.sql.Types |
定义了表示SQL 类型的常量 |
其中在JDBC
的基本操作中最常用的类和接口就是DriverManager
、Connection
、Statement
、Result
、PreparedStatement
。
四、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();
}
}
运行截图:
新建:
打开:
保存:
打印:
关闭:
对于这次实验,因为上课老师讲过,再加上我也拍了些核心代码,所以写的并不是很困难,就是理解这些代码花了很长时间。
以上是关于第十四周课程总结&实验报告(简单记事本的实现)的主要内容,如果未能解决你的问题,请参考以下文章