第十四周课程总结
Posted youlanghua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十四周课程总结相关的知识,希望对你有一定的参考价值。
学习总结
- 本周主要学习了用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(); // 实例化当前类
}
}
实验截图:
以上是关于第十四周课程总结的主要内容,如果未能解决你的问题,请参考以下文章