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

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

课程总结

不知不觉这一学期的学习已经进入尾声了,这一周我们学习的是Java数据库编程。了解JDBC、MySQL的基本操作以及sql语法的基本操作。

JDBC是Java提供的一套数据库操作标准,各个数据库生厂商要按照此标准来生产数据库驱动,开发者只需要掌握核心的接口与类即可通过SQL实现任意的数据库操作。在实际开发中可以直接使用JDBC进行各个数据库的连接和操作,而且可以方便的向数据库中发送各种SQL命令。在JDBC中提供的是一套标准的接口,也就是刚才说的,支持Java的数据库生厂商只需要按照此接口提供相应的实现,就都可以使用JDBC进行操作,这极大的体现了Java的可移植性设计思想。

JDBC驱动分类:

  • 1)JDBC-ODBC桥驱动:JDBC-ODBC是sun提供的一个标准的JDBC操作,直接利用微软的ODBC进行数据库的连接操作,但是这种操作性能极低,所以通常情况下不推荐使用这种方法进行操作。

  • 2)JDBC本地驱动:直接使用各种数据库生厂商提供的JDBC驱动程序,但是因为其只能运用在特定的数据库上,会丧失掉充足的可移植性,但是这样操作的性能较高。

  • 3)JDBC网络驱动:这种驱动程序将JDBC转化为与DBMS无关的网络协议,然后又被某个服务器转化为一种DBMS协议。这种网络服务器中间能够将它的纯Java客户连接到多种不同的数据库上。所用的具体协议取决于提供者。

  • 4)本地协议纯JDBC驱动:这种类型的驱动程序将JDBC掉用直接转化为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。

JDBC的主要操作和接口:

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

序号 类及接口 描述
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 该类是标准jaa,util.Date类的一个子集,用于表示SQLDATE相同的日期类型,该日期不包括时间
7 java,sql.TimeStamp 标准jaa,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 高级程序设计人员通过DriverPropertuInfo与Driver进行交流,可使用getDriverPropertyInfo获取或提供驱动程序的信息
14 java,sql.Time 该类是标准java.util.Date的一个子集,用于表示时分秒
15 java,sql.SQLException 对数据库访问时缠身的错误的描述信息
16 java,sql.SQLWarning 对数据库访问时产生的警告的描述信息
17 java,sql.Types 定义了表示SQL类型的常量

JDBC操作步骤:

  • 1)加载数据库驱动程序:各个数据库都会提供JDBC的驱动程序开发包,直接把JDBC操作所需要的开发包配置到class path路径即可。

  • 2)连接数据库:根据各个数据库的不同,连接的地址也不同,此连接地址将由数据库厂商提供,一般在使用JDBC连接数据库的时候都要求用户输入数据库连接的用户名和密码。

  • 3)使用语句进行数据库操作:数据库操作分为更新和查询两种操作,除了使用标准的SQl语句外,对于各个数据库也可以使用自己提供的各种命令。(这一个操作老师在上课的时候演示过,就是自己重新建造一个数据库,然后传入了姓名和年龄两个参数,并且还对两个参数进行了处理,我想这就是对数据库进行更新和自己建立一个数据库提供各种命令然后进行各种操作吧)

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

实验报告

package shyseven;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
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.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
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 java.awt.*;

public class Javajbookt extends JFrame implements ActionListener {

	JFrame f;
	JTextArea area;
	JMenuBar bar;
	JMenu men1,men2,men3,men4;
	JMenuItem Item1,Item2,Item3,Item4;
	ImageIcon image1,image2,image3,image4;
	JFileChooser chooser;
	JScrollPane scoll;
    File file;
	
	
	public Javajbookt(){
		f=new JFrame("记事本");
		bar=new JMenuBar();
		area=new JTextArea();
		scoll=new JScrollPane(area);
		
		men1=new JMenu("文件");
		men2=new JMenu("编辑");
		men3=new JMenu("查看");
		men4=new JMenu("帮助");
		image1=new ImageIcon("d:"+File.separator+"PR视频"+File.separator+"qq.4.png");
		image2=new ImageIcon("d:"+File.separator+"PR视频"+File.separator+"打开.png");
		image3=new ImageIcon("d:"+File.separator+"PR视频"+File.separator+"qq.3.png");
		image4=new ImageIcon("d:"+File.separator+"PR视频"+File.separator+"qq.3.png");
		Item1=new JMenuItem("新建(N)",image1);
		Item2=new JMenuItem("打开(O)",image2);
		Item3=new JMenuItem("保存(S)",image3);
		Item4=new JMenuItem("另存为(D)",image4);
			
		Item1.setMnemonic('N');
		Item2.setMnemonic('O');
		Item3.setMnemonic('S');
		Item4.setMnemonic('D');
		
		men1.add(Item1);
		men1.add(Item2);
		men1.add(Item3);
		men1.add(Item4);
		
		Item1.setAccelerator(KeyStroke.getKeyStroke('N',java.awt.Event.CTRL_MASK));
		Item2.setAccelerator(KeyStroke.getKeyStroke('O',java.awt.Event.CTRL_MASK));
		Item3.setAccelerator(KeyStroke.getKeyStroke('S',java.awt.Event.CTRL_MASK));
		Item4.setAccelerator(KeyStroke.getKeyStroke('D',java.awt.Event.CTRL_MASK));
		
		Item1.addActionListener(this);
		Item2.addActionListener(this);
		Item3.addActionListener(this);
		Item4.addActionListener(this);
		
		bar.add(men1);
		bar.add(men2);
		bar.add(men3);
		bar.add(men4);
		
	
		
		f.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(1);
			}
		});
		f.setJMenuBar(bar);
		f.getContentPane().add(scoll);
		f.add(scoll);
		f.setSize(400,300);
		f.setVisible(true);
		
	}
	

	@Override
	public void actionPerformed(ActionEvent e) {
		file =null;
		chooser=new JFileChooser();
        Object obj = e.getSource();
        if(obj instanceof JMenuItem) {
        	 JMenuItem item = (JMenuItem)obj;
        	 
        	 if(item == Item1) {
//        		 new TextArea();
        		 area.setText("");
        	 }else if(item == Item2) {
        		 chooser=new JFileChooser();
        		 chooser.showOpenDialog(null);
        		 file=chooser.getSelectedFile();
        		 try {
					FileInputStream fis=new FileInputStream(file);
					byte[] b=new byte[fis.available()];
					try {
						fis.read();
						area.append(new String(b));
						fis.close();
					} catch (IOException e1) {
						e1.printStackTrace();
					}
				} catch (FileNotFoundException e1) {
					e1.printStackTrace();
				} catch (IOException e2) {
					// TODO Auto-generated catch block
					e2.printStackTrace();
				}
        	 }else if(item==Item4) {
        		 chooser=new JFileChooser();
        		 chooser.showOpenDialog(null);
        		 file=chooser.getSelectedFile();
        		 
        	   if(!file.exists()) {
        		 try {
					file.createNewFile();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
        	 }
        	 try {
				FileOutputStream fos= new FileOutputStream(file);
				 byte[] b = area.getText().getBytes();
				 fos.write(b);
                 fos.close();
			} catch (FileNotFoundException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
          }else if(item==Item3) { 
        	  try {
				PrintStream out=new PrintStream(new FileOutputStream(file));
				out.print(this.area.getText());
				out.close();
			} catch (FileNotFoundException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
          }
        }
		
	}
}
package shyseven;

public class Javajbooktest {

	public static void main(String[] args) {
		new Javajbook();

	}

}

记事本:

记事本打开:

记事本另存为:

实验总结:

这一次的实验本来是老师上课已经给我们演示过的,但是还是有很多地方不知道这么去解决,也就是说要是去加一些东西还是很难的,总之还是要加强学习。

posted @ 2019-11-29 11:25  凉薄。。。  阅读(181)  评论(1编辑  收藏  举报