zoukankan      html  css  js  c++  java
  • 第十四周课程总结与实验报告

                                                      学习总结
    
    • 本周主要学习了用JDBC来使用MySQL。

    一,JDBC概述

       JDBC(Java Database Connectivity,Java数据库连接),提供了一种与平台无关的用于执行SQL语句的标准Java API,可以方便地实现多种关系型数据库的统一操作,它由一组用Java语言编写的类与接口组成。
    

    二,JDBC驱动的分类

       JDBC本身提供的是一套数据库操作标准,目前比较常见的JDBC驱动可分为以下四类:
    
       (1)JDBC-ODBC桥驱动:一种由Sun提供的标准JDBC操作,直接使用微软的ODBC进行数据库的连接操作,但这种操作性能低,不推荐直接使用。
    
       (2)JDBC本地操作:直接使用各个数据库生产商提供的JDBC驱动程序,但是只能应用在特定的数据库上,丧失了可移植性,但性能高。
    
       (3)JDBC网络驱动:这是一种将JDBC转换为DBMS无关的网络协议,然后又被某个服务器转换为一种DBMS协议。这是最为灵活的JDBC驱动程序。
    
       (4)本地纯协议JDBC驱动:将JDBC调用直接转换为DBMS所使用的网络协议。允许从客户机机器直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。
    

    三,JDBC的主要操作类及接口

    JDBC的核心是为用户提供Java API类库,让用户能够创建数据库连接、执行SQL语句、检索结果类、访问数据库数据等。在JDBC的基本操作中最基本的类和接口就是DriveManager、Connection、Statement、Result、PrepareStatement。

    (1)加载数据库的驱动
    
        DriveManager里面的registerDriver(Driver driver)
    
    (2)创建与数据库的连接
    
        DriverManager里面getConnection(String url, String user, String password)
    
    (3)编写sql语句
    
    (4)执行sql语句
    
        Statement里面executeQuery(String sql)
    
    (5)释放资源(关闭连接)
    

    • jdbc的DriverManager对象

    3.1 在java.sql包里面
    
    3.2 加载数据库驱动
    
        registerDriver(Driver driver):参数是数据库驱动,这个驱动是由数据库提供的
    
    (1)这个方法在实际开发中,一般是不使用的,因为这个方法会加载驱动两次在源代码中,加载了一次Driver
    
    (2)一般在开发中使用反射的方式加载数据库的驱动
    
        Class.forName("com.mysql.jdbc.driver");
    

    • 得到数据库的连接:

    getConnection(Strring url, String user, String password),返回Connection· 有三个参数:
    
    (1)url:表示要连接的数据库
    
        写法:jdbc:mysql://数据库的ip:数据库的端口号/连接的数据库的名称
    
        示例:jdbc:mysql://localhost:3306/testdb1
    
        简写的方式:jdbc:mysql:///testdb1(使用范围:连接的数据库是本机,端口是3306)
    
    (2)表示连接数据库的用户名
    
    (3)表示连接数据库的用户密码
    

    • jdbc的Connection对象

    4.1 代表数据库的连接,是接口,在java.sql包里面
    
    4,.2 创建Statement对象:Statement createStatement()
    
    4.3 创建预编译对象PreparedStatement prepareStatement(String sql)
    

    • jdbc的Statement对象

    5.1 执行sql的对象,接口,在java.sql包里面
    
    5.2 执行查询操作方法
    
        ResultSet executeQuery(String sql) , 返回查询的结果集
    
    5.3 执行增加 修改 删除的方法
    
        int executeUpdate(String sql),返回成功的记录数
    
    5.4 执行sql语句的方法
    
        boolean execute(String sql),返回是布尔类型,如果执行的是查询的操作返回true,否则返回false
    
    5.5 执行批处理的方法
    
        addBatch(String sql) :把多个sql语句放到批处理里面
    
        int[] executeBatch() :执行批处理里面的所有的sql
    

    • jdbc的ResultSet对象

    6.1 代表查询之后返回的结果,借口,在java.sql包里面类似于使用select语句查询出来的表格
    
    6.2 遍历结果集 next()
    
    6.3 得到数据的具体指
    
        · 如果是String类型,使用getString("字段的名称");
    
        · 如果是int类型,使用getInt("字段的名称");
    
        · 如果是不知道的类型,使用getObject("字段的名称");
    
    6.4 结果集的遍历方式
    
        · 在最开始的时候,指向第一行之前,当执行了next方法之后,一行一行的向下进行遍历,在默认的情况下,只能向下,不能向上。遍历出来的结果也是不能修改的
    
    

    四,关于数据库的连接

       一般有两个步骤,分别是:(1)加载驱动程序、(2)连接数据库
    
       (1)加载驱动程序:首先,我们需要先下载并安装好需要使用的数据库,如:MySQL数据库。然后用反射机制直接调用类名来使用类的功能。
    
       (2)连接数据库:使用DriveManager类来实现连接数据库。
    

                                                    课程设计任务
    

    一、使用Java fx实现的简单记事本;主要功能包括以下:

    • 新建文件
    • 打开文件
    • 保存文件
    • 另存为
    • 退出
    • …………

    实验代码:


    package 第十四周;
    
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.io.*;
    
    public class Txt extends JFrame implements ActionListener {
    
    	// 设置菜单面板
    	JMenuBar cdmb;
    	// 设置一级菜单按钮
    	JMenu cd1, cd2, cd3, cd4, cd5;
    	// 设置二级菜单按钮
    	JMenuItem cd1_1, cd1_2, cd1_3, cd1_4, cd1_5, cd1_6, cd1_7;
    	// 设置文本域
    	JTextArea wby;
    	// 设置滚动条
    	JScrollPane gdt;
    	// 设置欢迎面板
    	Huanying huanying;
    
    	// 自动执行
    	public Txt() {
    
    		// 设置菜单面板
    		cdmb = new JMenuBar();
    
    		// 设置一级菜单按钮名称
    		cd1 = new JMenu("文件(F)");
    		cd2 = new JMenu("编辑(E)");
    		cd3 = new JMenu("格式(O)");
    		cd4 = new JMenu("查看(V)");
    		cd5 = new JMenu("帮助(H)");
    
    		// 设置二级菜单按钮名称
    		cd1_1 = new JMenuItem("新建(N)");
    		cd1_1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
    		cd1_2 = new JMenuItem("打开(O)");
    		cd1_2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
    		cd1_3 = new JMenuItem("保存(S)");
    		cd1_3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
    		cd1_4 = new JMenuItem("另存为(A)");
    		cd1_4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
    		cd1_5 = new JMenuItem("页面设置(U)");
    		cd1_5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK));
    		cd1_6 = new JMenuItem("打印(P)");
    		cd1_6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));
    		cd1_7 = new JMenuItem("退出(X)");
    		cd1_7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));
    
    		// 添加监听事件
    		cd1_1.addActionListener(this);
    		cd1_1.setActionCommand("xinjian");
    		cd1_2.addActionListener(this);
    		cd1_2.setActionCommand("dakai");
    		cd1_3.addActionListener(this);
    		cd1_3.setActionCommand("baocun");
    		cd1_4.addActionListener(this);
    		cd1_4.setActionCommand("lingcunwei");
    
    		// 设置文本域
    		wby = new JTextArea();
    
    		// 设置滚动条
    		gdt = new JScrollPane(wby);
    
    		// 设置欢迎面板
    		huanying = new Huanying();
    		huanying.setSize(500, 100);
    
    		// 添加二级菜单到一级菜单
    		cd1.add(cd1_1);
    		cd1.add(cd1_2);
    		cd1.addSeparator(); // 添加横线
    		cd1.add(cd1_3);
    		cd1.add(cd1_4);
    		cd1.addSeparator(); // 添加横线
    		cd1.add(cd1_5);
    		cd1.add(cd1_6);
    		cd1.add(cd1_7);
    
    		// 添加一级菜单到菜单面板
    		cdmb.add(cd1);
    		cdmb.add(cd2);
    		cdmb.add(cd3);
    		cdmb.add(cd4);
    		cdmb.add(cd5);
    
    		// 添加面板到窗口
    		this.setJMenuBar(cdmb);
    		this.add(gdt);
    		this.add(huanying, BorderLayout.SOUTH);
    
    		// 设置窗口标题
    		this.setTitle("记事本");
    		// 设置窗口的宽高
    		this.setSize(500, 350);
    		// 添加标题栏图片
    		this.setIconImage((new ImageIcon("image/1.jpg")).getImage());
    		// 设置窗口出现对于屏幕的位置
    		this.setLocation(100, 100);
    		// 禁止拉大拉小
    		// this.setResizable(false);
    		// 关闭窗口后释放资源
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		// 输出窗口
    		this.setVisible(true);
    
    	}
    
    	public void actionPerformed(ActionEvent e) {
    		/**
    		 * 新建文件
    		 */
    		if (e.getActionCommand().equals("xinjian")) {
    			System.out.println("新建文件");
    
    		}
    
    		/**
    		 * 打开文件
    		 */
    		if (e.getActionCommand().equals("dakai")) {
    			System.out.println("打开文件");
    
    			// 打开文件的窗口
    			JFileChooser wjxz = new JFileChooser(); // 创建文件窗口的对象
    			wjxz.setDialogTitle("打开文件"); // 设置文件窗口标题
    			wjxz.showOpenDialog(null); // 打开文件窗口风格默认 *******,跟另存为只是这里有区别
    			wjxz.setVisible(true); // 显示文件窗口
    
    			// 得到用户选择的文件全路径
    			String wjlj = wjxz.getSelectedFile().getAbsolutePath();
    
    			FileReader wjl = null; // 文件流
    			BufferedReader hcl = null; // 缓冲流
    
    			try {
    				wjl = new FileReader(wjlj); // 文件流方式打开文件
    				hcl = new BufferedReader(wjl); // 缓冲流方式缓冲文件
    				String s = hcl.readLine(); // 读取一行
    				String content = "";
    
    				while (s != null) {
    					content += (s + "
    ");
    					s = hcl.readLine(); // 继续读取一行
    				}
    				wby.setText(content);
    
    			} catch (Exception aa) {
    
    			} finally {
    				try {
    					// 关闭流,文件
    					wjl.close();
    					hcl.close();
    				} catch (Exception bb) {
    
    				}
    			}
    
    		}
    
    		/**
    		 * 另存为文件
    		 */
    
    		if (e.getActionCommand().equals("lingcunwei")) {
    			System.out.println("另存为文件");
    
    			// 另存为文件的窗口
    			JFileChooser wjxz = new JFileChooser(); // 创建文件窗口的对象
    			wjxz.setDialogTitle("另存为文件"); // 设置文件窗口标题
    			wjxz.showSaveDialog(null); // 另存为文件窗口风格默认
    			wjxz.setVisible(true); // 显示文件窗口
    
    			// 得到用户选择的文件全路径
    			String bclj = wjxz.getSelectedFile().getAbsolutePath();
    
    			try {
    				// 保存文件
    				PrintStream pl = new PrintStream(bclj);
    				System.setOut(pl);
    				System.out.println(this.wby.getText());
    				pl.close();
    			} catch (Exception aa) {
    
    			}
    
    		}
    
    	}
    
    }
    
    class Huanying extends JPanel {
    	public void paint(Graphics g) {
    		// 设置颜色
    		g.setColor(Color.red);
    		// 文字
    		g.setFont(new Font("宋体", Font.BOLD, 12));
    		g.drawString("清悠灬音辰", 200, 10);
    	}
    }
    
    package 第十四周;
    
    public class DuiX {
        public static void main(String[] args) throws Exception{
            
        	Txt index = new Txt();                             //  实例化当前对象
            
        }
    }
    
    

    实验截图:

  • 相关阅读:
    Phonics 自然拼读法 s,a,t,i,p,n Teacher:Lamb
    English Voice of <<City of stars>>
    English trip EM2-LP-1A Hi Teacher:Taylor
    English trip EM2-PE-6B Teacher:Taylor,Patrick(2019.12.2)
    English trip EM2-PE-6A Family Relationship Teacher:Taylor
    keras各种优化方法总结 SGDmomentumnesterov
    keras做DNN
    keras、 tensor flow 教程
    DNN例子
    tensor flow 的两种padding方式
  • 原文地址:https://www.cnblogs.com/youlanghua/p/11959816.html
Copyright © 2011-2022 走看看