一。JDBC: Java DataBase Connective 是 Java连接数据库的规范 - 接口
-
java.sql -> JDBC 规范相关的接口,类 实现类: 各个数据库厂商来提供
-
1.Connection - 连接
a.引入jar包
mysql-connector-java-5.1.8-bin.jar
推荐数据库版本: 5.5 5.7 5.x
mysql-connector-java-8.0.16.jar
推荐数据库版本: 8.x
b.加载驱动 - 类
Class.forName(“驱动类名”);
oracle: oracle.jdbc.driver.OracleDriver
mysql: com.mysql.jdbc.Driver
c.获得连接
DriverManager.getConnection(url, username, password);
url: jdbc:mysql://ip:port/database?serverTimezone=GMT
username: 账号
password: 密码
d.获得执行SQL语句的Statement对象
e.执行SQL, 获得结果 boolean int ResultSet
f.释放资源
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Demo1 {
public static void main(String[] args) {
//加载驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver");// cj 控制台升级
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//建立连接
try {
/*
账号或密码错误:SQLException: Access denied for user 'liuliudr'@'localhost' (using password: YES)
时区错误:java.sql.SQLException: The server time zone value
port错误:java.net.ConnectException:
ip错误:UnknownHostException
可能产生异常: SQLException
1.dataBase 指定错误
2.账号/密码错误
3.端口错误 -> Connection refused
4.ip错误 -> Network is unreachable
5.jdbc:mysql 错误 -> No suitable driver
结论: 连接数据库url需要匹配合适的驱动类
*/
// url:(jdbc:mysql://ip:port/database?serverTimezone=GMT),user,password;
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/work01?serverTimezone=GMT","liuliudr","123456");
// url也可写成jdbc:mysql:///database前提是localhost
//System.out.println(conn);
/*
Statement 中:
boolean execute(String sal)
执行DDL DQL 返回 false,执行DCL返回true。返回值看他有没有结果
*/
Statement statement = conn.createStatement();
//DDL
String sql="create table sks(id int(10) primary key auto_increment,name varchar(20));";
statement.execute(sql);
//DQL
String sql1="insert into sks value(1,'黑土');";
statement.execute(sql1);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
-
-
Statement 中执行sql语句的方法有三个
boolean execute(String sql) DDL DML: 返回false DQL: 返回true 因为DML 和 DQL有专门的执行方法, 所以该方法通常用来执行DDL 返回值: 有没有结果 int executeUpdate(String sql) 只能执行 DML 返回值: 影响了几行 ResultSet executeQuery(String sql) 只能执行 DQL 返回值: 查询出来的结果集
-
@Test
public void testDML() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_day01", "root", "root");
Statement stmt = conn.createStatement();
// 5.执行sql语句 DDL DML DQL
// 执行DML
String sql = "insert into u values(1, 'lucy')";
boolean b = stmt.execute(sql); // false
System.out.println(b);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
@Test
public void testDQL() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_day01", "root", "root"