JDBC的简介
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
在实际开发中可以直接使用JDBC进行各个数据库的连接与操作,而且可以方便地向数据库中发送各种SQL命令。在JDBC中提供的是一套标准的接口,这样各个支持JAVA的数据库中生产商只要按照此接口提供相应的实现,就都可以使用JDBC进行操作,极大体现了JAVA的可移植性设计思想。
JDBC驱动程序共分四种类型:
类型1
JDBC-ODBC桥
这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。
类型2
本地API驱动
这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/C++等)来访问数据库,而在驱动程序中则包含了Java代码。
类型3
网络协议驱动
这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。
类型4
本地协议驱动
这种类型的驱动使用Socket,直接在客户端和数据库间通信。
JDBC的主要操作及接口
JDBC的主要操作及接口 | 类及接口 | 描述 |
---|---|---|
java.sql.DriverManager | 用于管理JDBC驱动程序 | |
java.sql.Connection | 用于建立与特定数据库的连接,一个连接就是一个会话,建立连接后便可以执行SQL语句和获得检索结果。 | |
java.sal.Statement | 一个Statement对象用于执行静态SQL语句,并获得语句执行后产生的结果。 | |
java.sql.PreparedStatement | 创建一个可以编译的SQL语句对象,给对象可以被多次运行,以提高执行效率,改接口是Statement的子接口。 | |
java.sql.ResultSet | 用于创建表示SQL语句检索结果集,用户通过结果集完成对数据库的访问。 | |
java.sql.Driver | 定义一个数据库的驱动接口。 | |
java.sql.Timestamp | 用于表示SQL时间戳,并增加了一个能表示ns(纳秒)的时间域 | |
java.sql.Data | 用于表示SQL DATE相同的日期类型,该日期不包括时间 | |
java.sql.CallableStatement | 用于执行SQL存储过程 | |
java.sql.DatabaseMetaData | 与java.sql.ResultSetMetaData一同用于访问数据库的元信息 | |
java.sql.Types | 定义表示SQL类型的常量 |
MySQL数据库
一个小型关系型数据库管理系统,开发者为MySQL AB公司。课本上有他的安装及配置。
常用命令:连接MySQL数据库:
mysql-u用户名 -p密码
创建和删除数据库:
创建:CREATE DATABASE 数据库名称
删除:DROP DATABASE 数据库名称
使用数据库
USE 数据库名称
创建数据库表
CREATE TABLE表名称{
字段名称1 字段类型【DEFAULT 默认值】【约束】
字段名称2 字段类型【DEFAULT 默认值】【约束】
。。。。
字段名称3 字段类型【DEFAULT 默认值】【约束】
}
删除数据库表
DROP TABLE 表名称
查看表结构
DESC 表名称
查看数据库信息
查看全部数据库: SHOW DATABASES;
查看一个数据库的全部表:SHOW TABLES;
简单记事本实现
package 简单记事本实现;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import static javax.swing.KeyStroke.*;
public class 记事本 implements ActionListener {
JFrame frame;
JMenuBar bar;
JMenu fileMenu, editMenu,formatMenu,viewMenu,helpMenu;
JMenuItem newItem, openItem, saveItem, closeItem;
ImageIcon newIcon, openIcon, saveIcon, closeIcon;
JScrollPane scroll;
JTextArea area;
JFileChooser chooser;
File file;
public 记事本() {
frame = new JFrame("记事本");
bar = new JMenuBar();
fileMenu = new JMenu("文件(F)");
editMenu = new JMenu("编辑(E)");
formatMenu= new JMenu("格式(O)");
viewMenu=new JMenu("查看(V)");
helpMenu= new JMenu("帮助(H)");
newIcon=new ImageIcon("d:"+File.separator+"记事本图片"+File.separator+"新建.jpg");
openIcon=new ImageIcon("d:"+File.separator+"记事本图片"+File.separator+"打开.jfif");
saveIcon=new ImageIcon("d:"+File.separator+"记事本图片"+File.separator+"保存.jpg");
closeIcon=new ImageIcon("d:"+File.separator+"记事本图片"+File.separator+"关闭.jfif");
newItem = new JMenuItem("新建(N)", newIcon);
openItem = new JMenuItem("打开(O)", openIcon);
saveItem = new JMenuItem("保存(A)", saveIcon);
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);
closeItem.setMnemonic(KeyEvent.VK_X);
newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));
closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.addSeparator();
fileMenu.add(closeItem);
newItem.addActionListener((ActionListener) this);
openItem.addActionListener((ActionListener) this);
saveItem.addActionListener((ActionListener) this);
closeItem.addActionListener((ActionListener) this);
bar.add(fileMenu);
bar.add(editMenu);
bar.add(formatMenu);
bar.add(viewMenu);
bar.add(helpMenu);
frame.setJMenuBar(bar);
frame.add(scroll);
frame.setVisible(true);
frame.pack();
}
public void actionPerformed(ActionEvent event) {
Object obj = event.getSource();
if (obj instanceof JMenuItem) {
JMenuItem item = (JMenuItem) obj;
//加入动作监听
if (item == newItem) {
new 记事本();
}
else if(item==openItem){
JFileChooser chooser=new JFileChooser();
chooser.showOpenDialog(null);
file=chooser.getSelectedFile();//返回选择的文件
try {
FileInputStream fis=new FileInputStream(file);
try {
byte[] b=new byte[fis.available()];
fis.read(b);
area.append(new String(b));
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
else if (item==saveItem){
JFileChooser chooser = new JFileChooser();
chooser.showSaveDialog(null);
file=chooser.getSelectedFile();
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
try {
FileOutputStream fos=new FileOutputStream(file);
byte[] b = area.getText().getBytes();
try {
fos.write(b);
} catch (IOException ex) {
ex.printStackTrace();
}
try {
fos.close();
} catch (IOException ex) {
ex.printStackTrace();
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
}
}
else if(item==closeItem){
System.exit(1);
}
}
}
}
package 简单记事本实现;
public class Test9 {
public static void main(String[] args) {
new 记事本();
}
}
我觉得不美观的就是小图标搞得有点大,哈哈哈。