DriverManager
1、注册驱动
Class.forName("com.mysql.jdbc.Driver");//因为Driver自动为我们调用了DriverManger.registerDriver(new Driver());
2、获取连接
Driver.getconnection(url,username,password);
参数:
1、url的连接路径
2、username:用户名
3:password:密码
connection
connection(数据库连接对象)作用:
1、获取执行SQL的对象
- 获取执行普通SQL对象
Statement state = conn.createStatement();//用户数据库连接对象.createStatement
- Statement作用:执行SQL
int executeUpdate(sql):执行DML(对数据的增删改操作)DDL(对数据库和表的增删改查操作)
返回值:(1)DML语句影响行数(2)DDL语句执行后,执行成功也可能返回0
代码演示
package com.JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JDBC_Dame {
public static void main(String[] args) throws Exception {
String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);//获取数据库连接
String sql1 = "update account set money = money + 50000 where id = 1";
Statement state = conn.createStatement();//获取执行SQL对象
int i = state.executeUpdate(sql1);//返回受影响的行数
}
}
ResultSet executeQuery(sql):执行DQL(对数据的查询操作) 返回值:ResultSet结果集对象
代码演示
package com.JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class JDBC_Dame {
public static void main(String[] args) throws Exception {
List<Account> accounts = new ArrayList<>();
String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);//获取数据库连接
Statement stat = conn.createStatement();//获取执行对象
String sql = "select * from account";
ResultSet rs = stat.executeQuery(sql);//执行SQL
Account acc = null;
while(rs.next()){
acc = new Account();
acc.setId(rs.getInt("id"));//获取id的值并封装成对象
acc.setName(rs.getString("name"));//获取name的值并封装成对象
acc.setMoney(rs.getDouble("money"));//获取money的值并封装成对象
accounts.add(acc);//将Account对象存入集合中
}
System.out.println(accounts);
}
}
- 获取预编译SQL的执行SQL对象:防止SQL注入 PreparedStatement pre = conn.preparedStatement(sql);//用户数据库连接对象.preparedStatement(sql)
代码演示
package com.JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;
public class JDBC_Dame {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url,username,password);
System.out.println("请输入用户名");
String name = sc.nextLine();
System.out.println("请输入密码");
String paw = sc.nextLine();
String sql = "select * from login where username = ? and password = ?";
PreparedStatement ps = conn.prepareStatement(sql);//获取PreparedStatement对象
ps.setString(1,name);//设置参数值
ps.setString(2,paw);
ResultSet rs = ps.executeQuery();//执行SQL
if(rs.next()){
System.out.println("登入成功");
}else{
System.out.println("登入失败");
}
}
}
2、管理事务
- 代码演示
package com.JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBC_Dame {
public static void main(String[] args) throws Exception {
String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);//获取数据库连接
String sql1 = "update account set money = money + 50000 where id = 1";
String sql2 = "update account set money = money - 50000 where id = 2";
Statement state = conn.createStatement();//获取执行SQL对象
try {
conn.setAutoCommit(false);//开启事务
state.executeUpdate(sql1);//执行SQL
state.executeUpdate(sql2);
conn.commit();//提交事务
} catch (Exception e) {
conn.rollback();//出现异常 回滚事务
throw new RuntimeException(e);
}
}
}