实验报告
实验代码
package Test; import javax.swing.*; import java.awt.event.InputEvent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.io.*; public class TestPad implements ActionListener{ File file; JFrame frame; JMenuBar bar; JMenu fileMenu,editMenu; ImageIcon newIcon,openIcon,saveIcon,closeIcon; JTextArea area; JScrollPane scroll; JMenuItem newItem,openItem,saveItem,closeItem; JFileChooser chooser; public TestPad(){ frame = new JFrame("记事本"); bar=new JMenuBar(); fileMenu=new JMenu("文件"); editMenu=new JMenu("编辑"); newIcon=new ImageIcon(); openIcon=new ImageIcon(); saveIcon=new ImageIcon(); closeIcon=new ImageIcon(); area=new JTextArea(); scroll=new JScrollPane(area); newItem=new JMenuItem("新建(N)",newIcon); openItem=new JMenuItem("打开(O)",openIcon); saveItem=new JMenuItem("另存为(S)",saveIcon); closeItem=new JMenuItem("关闭(C)",closeIcon); newItem.addActionListener(this); openItem.addActionListener(this); saveItem.addActionListener(this); closeItem.addActionListener(this); fileMenu.add(newItem); fileMenu.addSeparator(); fileMenu.add(openItem); fileMenu.addSeparator(); fileMenu.add(saveItem); fileMenu.addSeparator(); fileMenu.add(closeItem); newItem.setMnemonic(KeyEvent.VK_N); openItem.setMnemonic(KeyEvent.VK_O); saveItem.setMnemonic(KeyEvent.VK_S); closeItem.setMnemonic(KeyEvent.VK_C); newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.ALT_MASK)); openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.ALT_MASK)); saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.ALT_MASK)); closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.ALT_MASK)); bar.add(fileMenu); bar.add(editMenu); frame.setJMenuBar(bar); frame.add(scroll); frame.setSize(400,300); frame.setVisible(true); } public void actionPerformed(ActionEvent event) { Object obj=event.getSource(); if(obj instanceof JMenuItem){ JMenuItem item=(JMenuItem)obj; if(item==newItem){ new TestPad(); } 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 (IOException e) { e.printStackTrace(); } } else if(item==saveItem){ chooser=new JFileChooser(); chooser.showSaveDialog(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 Test; public class test { public static void main(String[] args){ new TestPad(); } }
实验结果
课程总结
数据库驱动
我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数据库打交道。其实也就是数据库厂商的JDBC接口实现,即对Connection等接口的实现类的jar文件。
什么是JDBC
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序
常用接口
Driver接口
Driver接口由数据库厂家提供,作为java开发人员,只需要使用Driver接口就可以了。在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序,不同的数据库有不同的装载方法。如: 装载MySql驱动:Class.forName("com.mysql.jdbc.Driver"); 装载Oracle驱动:Class.forName("oracle.jdbc.driver.OracleDriver");
Connection接口
Connection与特定数据库的连接(会话),在连接上下文中执行sql语句并返回结果。DriverManager.getConnection(url, user, password)方法建立在JDBC URL中定义的数据库Connection连接上。 连接MySql数据库:Connection conn = DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password"); 连接Oracle数据库:Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@host:port:database", "user", "password"); 连接SqlServer数据库:Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://host:port; DatabaseName=database", "user", "password"); 常用方法: createStatement():创建向数据库发送sql的statement对象。 prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。 prepareCall(sql):创建执行存储过程的callableStatement对象。 setAutoCommit(boolean autoCommit):设置事务是否自动提交。 commit() :在链接上提交事务。 rollback() :在此链接上回滚事务。