JDBC - 1 - Day20190731学习记录
JDBC day01 note
Java DateBase Connectivity
JDK 提供,Java链接数据库的规范
oracle MySQL
接口:Java.sql
接口实现类;数据库厂商完成
1.连接 Connection
2.操作数据库 Statement
3.结果 ResultSet
1.导jar包 数据库驱动包
MySQL-connector
ojdbc
2.连接数据库
a.加载驱动类
一、 加载驱动
Class.forName("com.mysql.jdbc.Driver"); // 添加mysql驱动
Class.forName("oracle.jdbc.OracleDriver"); // 添加Oracle驱动
可能产生异常:ClassNotFoundException (使用try/catch)
产生原因:
1.类名写错
2.jar包没导入
二、数据库连接 工具类 DriverManager
/*
* oracle:ip port sid username password
* mysql:ip port datebase username password
* url:
* oracle - jdbc:oracle:thin:@192.168.6.66:152:orcl
* mysql - jdbc:mysql://127.0.0.1:3306/test
* jdbc:mysql://loaclhost:3306/test
* 本地默认端口号的数据库 jdbc:mysql:///test
*
*/
/*
* 可能产生异常:SQLException
* 产生原因:
* 1.帐号、密码错误
* 2.url错误[格式错]
*/
// 连接两种数据库的方式
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/test",
"root",
"123456");
// com.mysql.jdbc.JDBC4Connection@238e0d81
// Connection conn = DriverManager.getConnection(
// "jdbc:oracle:thin:@192.168.6.66:1521:orcl",
// "student",
// "123456");
// // oracle.jdbc.driver.T4CConnection@64a294a6
// System.out.println(conn);
三、获得数据库的Statement对象
/*
* 执行sql语句的方法 3种
* execute() -> DDL DML DQL,通常执行DDL
* 返回值 boolean
* executeUpdate() -> DML
* 返回值 - 更新数据行数
* executeQuery() -> DQL
* 返回值 - ResultSet 结果集
*/
// DDL DML <- DQL
String sql = "insert into dept values(50,'PROGRAMER','HangZhou')";
Statement stmt = conn.createStatement();
// execute 返回值:是否有结果集 ResultSet
boolean b = stmt.execute(sql);
System.out.println(b);
/*
* ResultSet 所有的查出来的数据都存在这里
* ResultSet 中一条数据,就是查询结果的一行
* rs.next(); 等同于迭代器中两句话的效果 => hasNext(); next();
* rs.next():问有没有下一个,如果有直接取下一个
* rs.get方法 getXXX(index-1 / colName)
*/
// 表 - 实体类
// 字段 - 属性
ResultSet rs = stmt.executeQuery(sql);
// rs -- 表示一整行数据
// JDBC索引从 1 开始
while(rs.next()) {
int empno = rs.getInt("empno");
String ename = rs.getString("ename");
String job = rs.getString("job");
Date date = rs.getDate("hiredate");
int mgr = rs.getInt("mgr");
int sal = rs.getInt("sal");
int comm = rs.getInt("comm");
int deptno = rs.getInt("deptno");
System.out.println(empno+"\t"+ename+"\t"+job+"\t"+mgr+"\t"+date
+"\t"+sal+"\t"+comm+"\t"+deptno);
}
附上JDBCDemo01代码
package day01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
public class JDBCDemo01 {
public static void main(String[] args) {
Connection conn = null;
try {
// 1.加载驱动
/* 可能产生异常:ClassNotFoundException
* 产生原因
* 1.类名写错
* 2.jar包没导入
*
*/
Class.forName("com.mysql.jdbc.Driver");
Class.forName("oracle.jdbc.OracleDriver");
// 2.数据库连接 工具类DriverManager
/*
* oracle:ip port sid username password
* mysql:ip port datebase username password
* url:
* oracle - jdbc:oracle:@thin:192.168.6.66:152:orcl
* mysql - jdbc:mysql://127.0.0.1:3306/test
* jdbc:mysql://loaclhost:3306/test
* 本地默认端口号的数据库 jdbc:mysql:///test
*
*/
/*
* 可能产生异常:SQLException
* 产生原因:
* 1.帐号、密码错误
* 2.url错误[格式错]
*/
conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/test",
"root",
"123456");
// com.mysql.jdbc.JDBC4Connection@238e0d81
// Connection conn = DriverManager.getConnection(
// "jdbc:oracle:thin:@192.168.6.66:1521:orcl",
// "student",
// "123456");
// // oracle.jdbc.driver.T4CConnection@64a294a6
// System.out.println(conn);
// 3.获得操作数据库的statement对象
/*
* 执行sql语句的方法 3种
* execute() -> DDL DML DQL,通常执行DDL
* 返回值 - boolean
* executeUpdate() -> DML
* 返回值 - 更新数据行数
* executeQuery() -> DQL -> 单独讲
* 返回值 - ResultSet 结果集
*/
// DDL DML <- DQL
String sql = "insert into dept values(50,'PROGRAMER','HangZhou')";
sql = "select * from emp";
Statement stmt = conn.createStatement();
// execute 返回值:是否有结果集 ResultSet
// boolean b = stmt.execute(sql);
// System.out.println(b);
/*
* ResultSet 所有的查出来的数据都存在这里
* ResultSet 中一条数据,就是查询结果的一行
* rs.next(); 等同于迭代器中两句话的效果 => hasNext(); next();
* rs.next():问有没有下一个,如果有直接取下一个
* rs.get方法 getXXX(index-1 / colName)
*/
// 表 - 实体类
// 字段 - 属性
ResultSet rs = stmt.executeQuery(sql);
// rs -- 表示一整行数据
// JDBC索引从 1 开始
while(rs.next()) {
int empno = rs.getInt("empno");
String ename = rs.getString("ename");
String job = rs.getString("job");
Date date = rs.getDate("hiredate");
int mgr = rs.getInt("mgr");
int sal = rs.getInt("sal");
int comm = rs.getInt("comm");
int deptno = rs.getInt("deptno");
System.out.println(empno+"\t"+ename+"\t"+job+"\t"+mgr+"\t"+date
+"\t"+sal+"\t"+comm+"\t"+deptno);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 释放资源 rs stmt conn 一层层关闭,先小后大
// 频繁的开启和关闭连接,不推荐,非常消耗资源
// 解决方案 :连接池
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}