Java DataBase Connectivity Java数据库连接
JDBC 是一套标准,是Java与个大数据库厂商共同制定的一套接口,这套接口由个大数据库厂商进行了实现。
1. 导入Jar包
2. 连接数据库流程
public class Demo1 {
public static void createTable() throws ClassNotFoundException, SQLException {
//1.加载数据库驱动(可以省略,但是在JavaEE的Web项目中,jar包不可以省略。)
Class.forName("com.mysql.jdbc.Driver");
//2.通过驱动管理器获取JDBC连接对象
// (MySQL)数据库链接地址格式:
// 主协议:子协议://IP地址:端口号/数据库名称
// MySQL:jdbc jdbc:mysql://localhost:3306/test
// (Oracle)数据库链接地址格式:
// Oracle: jdbc:oracle:think:@ip地址:1521/ORCL
Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
//3.通过连接对象,创建SQL执行对象(SQL执行环境)
Statement state = conn.createStatement();
//4.通过SQL执行对象,执行SQL
state.execute("create table Person(id int ,name varchar(20))");//返还结果不代表成功和失败,true只代表是一个有结果集的SQL语句。
//5.释放连接
state.close();
conn.close();
System.out.println("执行完毕");
}
public static void insert() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
Statement state = conn.createStatement();
state.execute("insert into person values(1,'富贵')");
state.close();
conn.close();
}
}
3. 常用方法
1. DriverManager : 驱动管理器
常用方法:
-获取数据库连接:
static Connection getConnection(String 数据库地址,String 账号 ,String 密
码)
2. Connection : 数据库连接对象
常用方法:
- 创建SQL执行对象: Statement createStatement();
3. Statement : SQL执行对象
常用方法:
- 执行SQL语句(查询语句返回true, 其它语句返回false)
boolean execute(String sql); - 执行DML语句(INSERT UPDATE DELETE) 和 DDL语句(create alter drop)
(返回int值, 表示语句对数据库表格的影响行数 !)
(通常我们认为 返回值>0 表示执行成功.)
int executeUpdate(String sql); - 执行DQL语句 (select)
ResultSet executeQuery(String sql);
4. ResultSet : 结果集对象 (指的是一个select语句的查询结果)
1. 控制游标移动的常用方法:
- boolean next() ****
作用: 控制游标向下一行移动.
返回值: 移动成功返回true , 下一行不存在移动失败, 返回
false
- boolean privious() 了解
作用: 控制游标向上一行移动.
返回值: 移动成功返回true , 上一行不存在移动失败, 返回
false
- boolean absolute(int 行号) 了解
作用: 控制游标向指定行移动
返回值: 移动成功返回true , 行不存在移动失败, 返回false
- boolean beforeFirst() 了解
作用: 控制游标移动到第一行
返回值: 移动成功返回true, 没有第一行数据返回false
- boolean afterLast() 了解
作用: 控制游标移动到最后一行
返回值: 移动成功返回true, 没有最后一行数据返回false
2. 获取游标指向行的字段值的常用方法:
- XXX getXXX(String 列名) ***
-例如 result.getInt(String name);
public static void insert() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
Statement state = conn.createStatement();
int flag = state.executeUpdate("insert into person values(2,'长贵')");
state.close();
conn.close();
System.out.println("插入:"+flag);
}
public static void edit() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
Statement state = conn.createStatement();
int flag = state.executeUpdate("update person set name='钱富贵' where id = 1");
state.close();
conn.close();
System.out.println("编辑:"+flag);
}
public static void delete() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
Statement state = conn.createStatement();
int flag = state.executeUpdate("delete from person where id = 2");
state.close();
conn.close();
System.out.println("删除:"+flag);
}
public static void query() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
Statement state = conn.createStatement();
ResultSet result = state.executeQuery("select * from person");
while(result.next()){
int id = result.getInt("id");
String name = result.getString("name");
System.out.println("id:"+id+"\tname:"+name);
}
result.close();
state.close();
conn.close();
}