JDBC 由Java接口和数据库厂商提供的jar包(各种类和方法打包成的压缩文件)组成,java;
核心API DriverEngine,connection,statement,resultset;
步骤:
1 .注册驱动 导入jar包 安装jar包
2.建立连接connection
3.创建statement
4.使用statement对象发送sql语句,接受resultset
5.使用resultset对象解析数据
6.销毁资源(释放connection,statement,resultset)
步骤一:
注册驱动
class.forName("com.mysql.cj.jdbc.Driver");
步骤二:
创建连接
Connection connection = DriverManager.getConnection(DB_URL,USER,PASS);
//url构成:"jdbc:mysql://localhost:3306/demo01"
jdbc:数据库名://ip地址(数据库服务软件在本机可以用localhost代替):端口号/数据库名+可选条件
步骤三:
创建Statement对象
Statement statement = connection.createStatement();
步骤四:
创建结果集
ResultSet resultset = statement.executeQuery(sql);
sql为要执行的sql语句;
Statement API的使用:
int excuteUpdate(String sql):
执行非查询语句
ResultSet executeQuery(String sql):
执行查询操作,返回结果集对象
ResultSet.next()控制指向行数据的光标向下移一位,一般配合while循环获取全部数据:
while(ResultSet.next()){
获取数据:
ResultSet.getString/ResultSet.getInt(列名(有别名写别名)|列的下角标);
}
Statement的问题:
字符串拼接比较麻烦
字符串拼接实现sql语句可能影响查询结果,导致sql注入攻击
preparement为statement的子接口
preparestatement使用预编译的sql语句,sql语句中的动态语句用占位符?代替;
使用流程:
1 注册驱动
2 获取链接
3 编写SQL语句,动态值部分用?代替
4 占位符赋值
5 发送SQL语句
6 解析结果集
7 关闭资源(从内到外)
import java.sql.*;
public class ConnectDemo {
public static void main(String[] args) throws Exception{
Class.forName("com.mysql.cj.jdbc.Driver");//反射触犯类的静态代码块,避免驱动的反复注册
System.out.println("数据库链接");
Connection connection =
DriverManager.getConnection("jdbc:mysql:///demo01","root","123456");
String sql = "select * from student";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
System.out.println("id: "+resultSet.getInt("id")+" ");
System.out.println("number: "+resultSet.getInt("number")+" ");
System.out.println("name: "+resultSet.getString("name")+" ");
System.out.println("gender: "+resultSet.getString("gender")+" ");
}
System.out.println("数据库关闭");
resultSet.close();
preparedStatement.close();
connection.close();
}
}