1、jdbc是什么?
是厂商定义的一种接口,用来连接各种数据库。
2、jdbc中的类和接口:
DriverManager类:连接数据库:DriverManager.getConnection(url,username,password);
Connection接口:代表实现对象。
Statement接口:发送sql语句给服务器。用于执行静态sql语句并返回生成的对象。
Statement接口的方法:
1. int executeUpdate(String sql):
a.发送DML语句对数据库进行增删改操作:insert 、update 、delete。
b.返回值:int类型,对数据库影响的行数。
2.ResultSet executeQuery(String sql)
a.发送DQL语句对数据库进行查找操作:select。
b.返回值:查找的结果
2、jdbc的连接:
四个参数:url,username,password,driverClassName
1、普通方法:
package day01_JDBC.ClassWork;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCcollection {
public static void main(String[] args) throws SQLException {
String url="jdbc:mysql://127.0.0.1:3306/xx3?serverTimezone=GMT";
Connection connection = DriverManager.getConnection(url,"root","jinjie3015035");
}
}
2、做成一个工具类:
package day01_JDBC.ClassWork;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCUtils {
private static String driverClassName;
private static String url;
private static String username;
private static String password;
static {
Properties properties=new Properties();
try {//加载文件
properties.load(JDBCUtils.class.getResourceAsStream("qwe.properties"));
} catch (IOException e) {
e.printStackTrace ();
}
//赋值
driverClassName=properties.getProperty("driverClassName");
url=properties.getProperty("url");
username=properties.getProperty("username");
password=properties.getProperty("password");
}
public static Connection getConnection() {
Connection connection=null;
try {
Class.forName(driverClassName);
connection= DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void close(Connection connection){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(Connection connection, Statement statement) {
try {
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//调用Connection connection=JDBCUtils.getConnection();
3、PreparedSatement接口
PreparedSatement接口中的方法:
int executeUpdate():执行DML语句,增删改操作,返回影响行数
ResultSet executeQuery():执行DQL语句,查询操作,返回结果集。
package day01_JDBC;
import java.sql.*;
public class Demo3 {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String url = "jdbc:mysql://127.0.0.1:3306/xx3?serverTimezone=GMT";
try {
Connection connection =DriverManager.getConnection(url,"root","jinjie3015035");
System.out.println(connection);
//获得statetment对象
Statement statement =connection.createStatement();
ResultSet rs= statement.executeQuery("select *from x3");
while (rs.next()){
int id=rs.getInt(1);
System.out.println(id+",");
String nam=rs.getString(2);
System.out.println(nam);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package day01_JDBC;
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");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//3、连接数据库 ?serverTimezone=GMT
String url = "jdbc:mysql://127.0.0.1:3306/xx3?serverTimezone=GMT";
try {
Connection connection = DriverManager.getConnection(url, "root", "jinjie3015035");
System.out.println(connection);
//执行sql语句之前,需要把sql语句发送给服务器
//4、获得一个Statement对象
Statement statement = connection.createStatement();
//5、执行sql
/*
* execute :DML、DQL、DDL 返回true或false 通常不用。
* executeUpdate:DML、DDL。用于数据库的增删改:insert、update、delete。
* executeQuery: 只有DQL才能用。查询;select。
* */
// statement.executeUpdate("create table X3(id int primary key auto_increment,nam varchar(20))");
// statement.executeUpdate("insert into X3 value(1,'沃达丰')");
statement.executeUpdate("insert into X3 value(2,'士大夫1')");//插入
// statement.executeUpdate("insert into X3(id) value(6)");//插入
// statement.executeUpdate("insert into X3(nam) value('哈哈哈哈')");//插入
// statement.executeUpdate("insert into X3 value(3,'士大夫2')");//插入
// statement.executeUpdate("insert into X3 value(4,'士大夫3')");//插入
// statement.executeUpdate("insert into X3 value(5,'士大夫4')");//插入
for (int i = 0; i < 2; i++) {
System.out.println("请输入id");
// Scanner scanner=
}
// statement.executeQuery("select *from x3");//查找
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3、JDBC的事务管理
1.开启事务:connection.setAutoCommit(false);
2.回滚事务:rollback()
3.提交事务:commit()