1.相关概念
JDBC: Java DataBase Connectivity 可以为多种关系型数据库提供统一的方式
JDBC API:提供各种操作访问接口
各种数据库驱动:相应的数据库厂商提供的(第三方公司提供)
2.jdbc访问数据库的具体步骤
a.导入驱动,加载具体的驱动类
b.与数据库建立连接
c.发送sql,执行
d.处理结果集(查询)
3.JDBC API 主要功能:
三件事,具体是通过以下类/接口实现:
DriverManager:管理不同的数据库驱动
Connection:连接----------------通过DriverManager产生
Statement、PreparedStatment:增删改查---------通过Connection产生
CallableStatment:调用数据库的存储过程、存储函数---------------通过Connection产生
Result:返回结果--------------通过各类Statement产生
DriverManager→Connection→Statement
Connection:
Connection产生操作数据库的对象:
Connection产生Statement对象 :createStatment()
Connection产生PreparedStatment对象 :prepareStatment()
Connection产生CallableStatment对象 :prepareCall()
Statement:
Statement操作数据库:
增删改:executeUpdate():
查询:executeQuery():
PreparedStatment操作数据库:
增删改:executeUpdate():
查询:executeQuery():
赋值操作:setXXX();
ResultSet
ResultSet:保存结果集 select*from xxx
.next():光标下移 判断是否有下一条数据:true/false
.previous():光标上移 判断是否有上一条数据:true/false
.getXXX(字段名|位置);获取具体的字段值
数据库驱动
驱动jar 具体驱动类 连接字符串
Mysql mysql-connector-java.x.jarcom.mysql.jdbc.Driver jdbc:mysql://localhost:3306/test
SqlServer sqljdbc-x.jar
Oracle ojdbc-x.jar
package com.jdbc.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class mysql {
private static final String URL="jdbc:mysql://localhost:3306/test"; //连接字符串
private static final String USERNAME="root"; //数据库用户名
private static final String USERPASSWORD="root"; //数据库连接所用密码
public static void update() {//增删改
Statement stmt=null;
Connection connection=null;
try {
//a.导入驱动 ,加载具体的驱动类
Class.forName("com.mysql.jdbc.Driver");//加载具体的驱动类
//b.与数据库建立连接
connection = DriverManager.getConnection(URL, USERNAME, USERPASSWORD);
// c.发送sql,执行(增删改,查)
stmt = connection.createStatement();
//String sql = "INSERT INTO student VALUES (987,'陈华凯',234,'wdwd')";
//String sql = "update student set sname='魔王' where sno = 987 ";
String sql = "delete from student where sno= 987";
//执行sql
int count = stmt.executeUpdate(sql);//返回值表示 增删改了几条数据
if (count > 0) {
System.out.print("操作成功");
}
}catch (ClassNotFoundException e){
e.printStackTrace();
}catch (SQLException e){
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
} finally {
try {
if (stmt!=null) stmt.close();//对象.方法()
if (connection!=null) connection.close();
} catch (SQLException e){
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
}
}
public static void main(String[] args) {
update();
}
}
PreparedStatment 与Statment在使用时的区别:
1.Statment:
sql
executeUpdate(sql)
PreparedStatment:
sql(可能存在占位符?)
在创建PreparedStatment对象时将sql预编译connection.prepareStatement(sql);
setXxx()替换占位符?
executeUpdate()