标签:exist 存储 编辑 nic 操作 相同 tput mysql 数据库 jdbc
记事本实验源码:
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("记事本"); 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); } } } }
实验截图:
实验过程和问题:
老师在课上写过这个代码,但独自完成还是有些难度,代码实现过程没有什么大问题,按照步骤实现记事本的一些功能,但是没能实现一些新的功能。但也出现了问题,在网上找了表示新建、打开、保存等的图标,但是会出现显示过大或不显示的问题,后来通过改图标分辨率才解决问题。
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数据库连接,首先想到的是用数据库来实现用户的登录系统,目前仍在努力中,数据库的学习中同样有很多的类和接口来对数据库进行一些操作,这是比较难的一方面,但是实现之后使用起来就会很方便,在很多程序中都需要大量数据,所以这一方面还是要学好。
标签:exist 存储 编辑 nic 操作 相同 tput mysql 数据库 jdbc
原文地址:https://www.cnblogs.com/198266qq/p/11954209.html