第十四周课程总结
第十四周课程总结
- JDBC的简介
1.1 jdbc:Java DataBase Connectivity,Java数据库的连接
1.2 比如有一台电脑,想在电脑上安装显卡,需要显卡的驱动,由显卡生产厂商提供
1.3 要想使用java对数据库进行操作,需要使用由数据库提供的数据库驱动
1.4 一个程序,使用java操作数据库,掌握java代码,出了掌握java代码之外,需要掌握数据库驱动的代码。
但是我们有很多的数据库,比如mysql、oracle,对于程序员来说,需要掌握每种数据库的代码,对于程序员来说压力很大
1.5 sun公司针对这种情况,开发出一套标准接口,各个数据库只需要实现这个借口就可以了,程序员只需要掌握这套借口就可以了,这套标准的借口就是jdbc
1.6 如果想要使用jdbc对数据库进行操作,首先安装数据库的驱动,不同的数据库提供驱动使用jar的形式提供,需要把jar包房在项目里面,相当于安装了数据库的驱动
2.1 使用jdbc对数据库进行操作步骤是固定的
2.1.1 使用到的类和接口
DriverManager
Connection
Statement
ResultSet
2.2 jdbc的操作步骤
(1)加载数据库的驱动
DriveManager里面的registerDriver(Driver driver)
(2)创建与数据库的连接
DriverManager里面getConnection(String url, String user, String password)
(3)编写sql语句
(4)执行sql语句
Statement里面executeQuery(String sql)
(5)释放资源(关闭连接)
3. jdbc的DriverManager对象
3.1 在java.sql包里面
3.2 加载数据库驱动
registerDriver(Driver driver):参数是数据库驱动,这个驱动是由数据库提供的
(1)这个方法在实际开发中,一般是不使用的,因为这个方法会加载驱动两次
在源代码中,加载了一次Driver
(2)一般在开发中使用反射的方式加载数据库的驱动
Class.forName("com.mysql.jdbc.driver");
3.3 得到数据库的连接
getConnection(Strring url, String user, String password),返回Connection
· 有三个参数:
(1)url:表示要连接的数据库
写法:jdbc:mysql://数据库的ip:数据库的端口号/连接的数据库的名称
示例:jdbc:mysql://localhost:3306/testdb1
简写的方式:jdbc:mysql:///testdb1(使用范围:连接的数据库是本机,端口是3306)
(2)表示连接数据库的用户名
(3)表示连接数据库的用户密码
4. jdbc的Connection对象
4.1 代表数据库的连接,是接口,在java.sql包里面
4,.2 创建Statement对象:Statement createStatement()
4.3 创建预编译对象PreparedStatement prepareStatement(String sql)
5. 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
6. jdbc的ResultSet对象
6.1 代表查询之后返回的结果,借口,在java.sql包里面类似于使用select语句查询出来的表格
6.2 遍历结果集 next()
6.3 得到数据的具体指
· 如果是String类型,使用getString("字段的名称");
· 如果是int类型,使用getInt("字段的名称");
· 如果是不知道的类型,使用getObject("字段的名称");
6.4 结果集的遍历方式
· 在最开始的时候,指向第一行之前,当执行了next方法之后,一行一行的向下进行遍历,在默认的情况下,只能向下,不能向上。遍历出来的结果也是不能修改的
2、MySQL。
一、库操作。
1、、创建数据库
命令:create database <数据库名>
例如:建立一个名为xhkdb的数据库
mysql> create database xhkdb;
2、显示所有的数据库
命令:show databases (注意:最后有个s)
mysql> show databases;
3、删除数据库
命令:drop database <数据库名>
例如:删除名为 xhkdb的数据库
mysql> drop database xhkdb;
4、连接数据库
命令: use <数据库名>
例如:如果xhkdb数据库存在,尝试存取它:
mysql> use xhkdb;
屏幕提示:Database changed
5、查看当前使用的数据库
mysql> select database();
6、当前数据库包含的表信息:
mysql> show tables; (注意:最后有个s)
二、表操作,操作之前应连接某个数据库。
1、建表
命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);
mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));
2、获取表结构
命令: desc 表名,或者show columns from 表名
mysql>DESCRIBE MyClass
mysql> desc MyClass;
mysql> show columns from MyClass;
3、删除表
命令:drop table <表名>
例如:删除表名为 MyClass 的表
mysql> drop table MyClass;
4、插入数据
命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为82.99,编号为3 的名为Wang 的成绩为96.5.
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
5、查询表中的数据
1)、查询所有行
命令: select <字段1,字段2,...> from < 表名 > where < 表达式 >
例如:查看表 MyClass 中所有数据
mysql> select * from MyClass;
2)、查询前几行数据
例如:查看表 MyClass 中前2行数据
mysql> select * from MyClass order by id limit 0,2;
或者:
mysql> select * from MyClass limit 0,2;
6、删除表中数据
命令:delete from 表名 where 表达式
例如:删除表 MyClass中编号为1 的记录
mysql> delete from MyClass where id=1;
这是记事本。
package 二;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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;
public class Word implements ActionListener{
JFrame frame;
JMenuBar bar;
JMenu fileMenu,editMenu;
JMenuItem filenewItem,openItem,saveItem,closeItem;
JTextArea area;
JScrollPane scorll;
File file;
JFileChooser chooser;
@SuppressWarnings("deprecation")
public Word() {
frame = new JFrame("记事本");
bar = new JMenuBar();
fileMenu = new JMenu("文件");
editMenu = new JMenu("编辑");
filenewItem = new JMenuItem("新建(N)");
openItem = new JMenuItem("打开(O)");
saveItem = new JMenuItem("另存为(A)");
closeItem = new JMenuItem("关闭(X)");
area =new JTextArea();
scorll = new JScrollPane(area);
filenewItem.setMnemonic(KeyEvent.VK_N);
openItem.setMnemonic(KeyEvent.VK_0);
saveItem.setMnemonic(KeyEvent.VK_A);
closeItem.setMnemonic(KeyEvent.VK_X);
filenewItem.setAccelerator(KeyStroke.getKeyStroke('N',java.awt.Event.CTRL_MASK));
openItem.setAccelerator(KeyStroke.getKeyStroke('O',java.awt.Event.CTRL_MASK));
openItem.setAccelerator(KeyStroke.getKeyStroke('A',java.awt.Event.CTRL_MASK));
closeItem.setAccelerator(KeyStroke.getKeyStroke('C',java.awt.Event.ALT_MASK));
fileMenu.add(filenewItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.addSeparator();// 分隔线
fileMenu.add(closeItem);
filenewItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
closeItem.addActionListener(this);
bar.add(fileMenu);
bar.add(editMenu);
frame.setJMenuBar(bar);
frame.add(scorll);
frame.setSize(600,500);
frame.setVisible(true);
}
public void actionPaneformed(ActionEvent event) {
Object obj = event.getSource();
if (obj instanceof JMenuItem) {
JMenuItem item = (JMenuItem) obj;
//新建窗口
if (item == filenewItem) {
new Word();
}
//打开文本
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) {
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 c) {
c.printStackTrace();
}
}else if (item == closeItem) {
System.exit(1);
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
}
public static void main(String[] args) {
new Word();
}
}
本周学习小结