第十四周课程总结&实验报告

记事本实验源码:

package main1;

import javax.swing.*;
import java.awt.event.*;
import java.io.*;


public class Test implements ActionListener {
         JFrame frame;
         JMenuBar bar;
         JMenu fileMenu,editMenu;
         JMenuItem newItem,openItem,saveItem,savesItem,closeItem;
         ImageIcon newIcon,openIcon,saveIcon,savesIcon,closeIcon;
         JScrollPane scroll;
         JTextArea area;
         JFileChooser chooser;
         File file;


     public Test(){
             frame =new JFrame("LZY");
             bar =new JMenuBar();
             fileMenu =new JMenu("文件");
             editMenu =new JMenu("编辑");
             newIcon=new ImageIcon("d:"+File.separator+"java"+File.separator+"1.png");
             openIcon=new ImageIcon("d:"+File.separator+"java"+File.separator+"2.png");
             saveIcon=new ImageIcon("d:"+File.separator+"java"+File.separator+"3.png");
             savesIcon=new ImageIcon("d:"+File.separator+"java"+File.separator+"3.png");
             closeIcon=new ImageIcon("d:"+File.separator+"java"+File.separator+"4.png");
             newItem=new JMenuItem("新建(N)",newIcon);
             openItem=new JMenuItem("打开(O)",openIcon);
             saveItem=new JMenuItem("保存(A)",saveIcon);
             savesItem = new JMenuItem("另存为(B)",savesIcon);
             closeItem=new JMenuItem("关闭(X)",closeIcon);
             area =new JTextArea();
             scroll=new JScrollPane(area);

             newItem.setMnemonic(KeyEvent.VK_N);
             openItem.setMnemonic(KeyEvent.VK_O);
             saveItem.setMnemonic(KeyEvent.VK_A);
             savesItem.setMnemonic(KeyEvent.VK_B);
             closeItem.setMnemonic(KeyEvent.VK_X);

             newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK));
             openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_DOWN_MASK));
             saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
             savesItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_DOWN_MASK));
             closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));

             fileMenu.add(newItem);
             fileMenu.add(openItem);
             fileMenu.add(saveItem);
             fileMenu.add(savesItem);
             fileMenu.add(closeItem);
             
             JScrollPane scroll =new  JScrollPane(area, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);//加滚动条
             newItem.addActionListener(this);
             openItem.addActionListener(this);
             saveItem.addActionListener(this);
             savesItem.addActionListener(this);
             closeItem.addActionListener(this);

             bar.add(fileMenu);
             bar.add(editMenu);

             frame.addWindowListener(new WindowAdapter() {
               public void windowClosing(WindowEvent arg0){
                   System.exit(1);
               }});
              frame.setJMenuBar(bar);
              frame.add(scroll);
              frame.setVisible(true);
              frame.setSize(800,600);
              frame.setLocation(500,400);
         }
         
         public void actionPerformed(ActionEvent a) {        
             Object obj= a.getSource();
             if(obj instanceof JMenuItem) {
                 JMenuItem item=(JMenuItem) obj;
                 if(item==newItem) {       //新建
                     new Test();
                 }
                 else if(item==openItem) {            //打开
                     chooser=new JFileChooser();
                     chooser.showOpenDialog(null);
                     file=chooser.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 e) {
                         e.printStackTrace();
                     }catch(IOException e) {
                         e.printStackTrace();
                     }
                 }
                 else if(item==saveItem) {             //保存
                     if(file!=null) {
                         try {
                             PrintStream out = new PrintStream(new FileOutputStream(file));
                             out.print(this.area.getText());
                             out.close();
                         } catch (FileNotFoundException e){
                             e.printStackTrace();
                         }
                     }
                     else if(item==savesItem){              //另存为
                     chooser.showOpenDialog(null);
                     file=chooser.getSelectedFile();
                     try {
                         if(!file.exists()) {
                             file.createNewFile();
                     }
                     FileOutputStream fos=new FileOutputStream(file);
                     byte[] b=area.getText().getBytes();
                     fos.write(b);
                     fos.close();
                     }
                     catch(IOException e) {
                             e.printStackTrace();
                     }   
                 }
                     
                 }else if(item==closeItem){           //关闭
                     System.exit(1);
                 }
                     }
                     
                 }
             }

 

package main1;

public class main {
    public static void main(String[] args)
    {
        new Test();
    }

}

 

 

实验截图:

 

 

 

 实验过程和问题:

老师在课上写过这个代码,但独自完成还是有些难度,代码实现过程没有什么大问题,按照步骤实现记事本的一些功能,但是没能实现一些新的功能。但也出现了问题,在网上找了表示新建、打开、保存等的图标,但是会出现显示过大或不显示的问题,后来通过改图标分辨率才解决问题。

 

JDBC课程学习总结:

JDBC(JavaDataBase Connectivity)就是Java数据库连接,就是用Java语言来操作数据库。操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。

 

Java中的JDBC驱动可以分为四种类型,包括JDBC-ODBC桥、本地API驱动、网络协议驱动和本地协议驱动。

  一、JDBC-ODBC桥

    JDBC-ODBC 桥 是sun公司提供的,这种类型的驱动实际是把所有 JDBC的调用传递给ODBC ,再由ODBC调用本地数据库驱动代码。

  二、本地API驱动

     本地API驱动直接把JDBC调用转变为数据库的标准调用再去访问数据库。

  三、网络驱动

    JDBC先把对数局库的访问请求传递给网 络上的中间件服务器. 中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用 传给数据库服务器。

  四、本地协议驱动

    这种驱动直接把JDBC调用转换为符合相关数据库系统规范的请求。

 

JDBC的主要操作类及接口

JDBC的主要操作类及接口

序号

类及接口

描 述

1

java.sql.DriverManager

用于管理JDBC驱动程序

2

java.sql.Connection

用于建立与特定数据库的连接,一个连接就是一个会话,建立后连接后便可以执行SQL语句和获得检索结果

3

java.sgql.Statement

一个Statement对象用于执行静态SQL语句,并获得语句执行后产生的结果

4

java.sql.PreparedStatement

创建一个可以编译的SQL语句对象,该对象可以被多次运行, 以提高执行的效率,该接口是Statement的子接口

5

java.sql.ResultSet

用于创建表示SQL语句检索结果的结果集,用户通过结果集完成对数据库的访问

6

java.sql.Date

该类是标准java.uil.Date的一个子集,用于表示与SQL DATE相同的日期类型,该日期不包括时间

7

java.sgl.Trimestamp

标准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.DriverPropertyInto

高级程序设计人员通过DriverPropertyInfo与Driver进行交流, 可使用getDriverPropertyInfo获取或提供驱动程序的信息 

13

java.sql.Time

该类是标准java.util.Date的一个子集,用于表示时、分、秒

14

java.sgl.SQLException

对数据库访问时产生的错误的描述信息

15

java.sgql.SQL Warning

对数据库访问时产生的警告的描述信息

16

java.sql.Types

定义了表示SQL类型的常量

JDBC操作步骤

1.加载数据库驱动程序

  1 加载Oracle数据库驱动  Class.forName("oracle.jdbc.driver.OracleDriver");

  2 加载SQL Server数据库驱动  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

  3 加载MySQL 数据库驱动  Class.forName("com.mysql.jdbc.Driver");

2.连接数据库

  根据各个数据库的不同,连接的地址也不同,此连接地址将由数据库厂商提供。

DriverManager类的常用方法

序号

方 法

类型

描述

1

public static Connection getConnection(String url) throws SQLException

普通

通过连接地址连接数据库

2

public static Connection getConnection(String url,String user,String password) throws SQLException

普通

通过连接地址连接数据库,
同时输入用户名和密码

3.使用语句进行数据库操作

数据库操作分为更新和查询两种操作,除了可以使用标准的SQL语句外,对于各个数据库也可以使用其自己提供的各种命令。

4.关闭数据库连接

  闭数据库连接:数据库操作完毕之后需要关闭连接以释放资源。

数据库的更新操作

序号

方法

类型

描述

1

int executeUpdate(String sql) throws SQLException

普通

执行数据库更新的SQL语句,如INSERT、 UPDATE, DELETE等语句,返回更新的记录数

2

ResulSet executeQuery(String sql) throws SQLException

普通

执行数据库查询操作,返回一个结果集对象

3

void addBatch(String sq) throws SQLException

普通

增加一个待执行的SQL语句

4

int[] executeBatch) throws SQLException

普通

批量执行SQL语句

5

void close) throws SQLException

普通

关闭Statement操作

6

boolean execute(String sq) throws SQLException

普通

执行SQL语句

 

个人学习总结:

 本周学习了java数据库连接,首先想到的是用数据库来实现用户的登录系统,目前仍在努力中,数据库的学习中同样有很多的类和接口来对数据库进行一些操作,这是比较难的一方面,但是实现之后使用起来就会很方便,在很多程序中都需要大量数据,所以这一方面还是要学好。

posted on 2019-11-29 12:17  lizhiyang  阅读(142)  评论(0编辑  收藏  举报