JDBC API
开发公司:原SUN公司,现Orcal公司。
简介:提供了可调用的接口与类,集成在java.sql与javax.sql中,提供以下接口与类
1)Driver接口:代表驱动程序, Driver接口由数据库厂家提供,对于Java开发者而言,只需要使用Driver接口就可以了。
-
在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序。不同的数据库有不同的装载方法。
-
驱动:就是各个厂商实现Sun公司提出的JDBC接口。即对Connection等接口的实现类的jar文件。
-
装载mysql驱动:Class.forName(“com.mysql.jdbc.Driver”);
- 装载oracle驱动:Class.forName(“com.jdbc.driver.OracleDriver”);
2)DriverManager类:驱动程序管理员,是JDBC管理层,作用于用户和驱动程序之间, 此类管理数据库驱动程序列表,用来管理数据库中的所有驱动程序,跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接.此外,DriverManager类中的方法都是静态方法,所以在程序中无须对它进行实例化,直接通过类名就可以调用.DriverManager类的常用方法有getConnection(String url,String user,String password)方法
3)Connection接口:代表数据库连接,此接口与特定数据库的连接(会话),在连接上下文中执行sql语句并返回结果(说白了就是指定,数据库连接,然后连接执行sql语句获取结果)
DriverManager的getConnection()方法建立在JDBC URL中定义的数据库Connection连接上
1. Mysql
Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:8080/database”, “user”,“password”);
2. Oracle
Connection con =DriverManager.getConnection(“jdbc:oracle:thin@localhost:8080/database”, “user”,“password”);
4)Statement接口: 数据库操作对象,有三种Statement类
1.Statement,由con.createStatement创建,用于发送简单的sql语句(不带参数,用的较少)
2.PreparedStatement,继承自Statement接口,由con.preparedStatement创建,用于发送含有一个或者多个输入参数的SQL语句。 比Statement对象效率更高,并且是防止SQL注入。我们一般都使用PreparedStatement。
3.CallableStatement:继承自preparedStatement。由方法prePareCall创建,用于调用存储过程。
常用的Statement方法
-
execute():运行语句,返回是否有结果集。
-
executeQuery():运行select语句,返回ResultSet结果节
-
executeUpdate():运行insert/update/delete操作,返回更新的行数。
5)ResultSet接口:数据库结果集
Statement执行SQL语句时返回Result结果集。
ResultSet提供的检索不同类型字段的方法,常用的有:
-
getString():获得在数据库里是varchar,char等数据类型的对象。
-
getFloat():获得数据库里是Float类型的对象
-
getDate():获得数据库里是Date类型的对象
-
getBoolean():获得数据库里是Boolean类型的数据
依序关闭使用的对象和连接
-
Result->Statement->Connection
JDBC实例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestJdbc {
public static void main(String[] args) {
Connection conn = null; //提升Connection作用域,用于关闭连接
Statement stmt = null;
ResultSet rs = null;
// TODO Auto-generated method stub
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//2.获取连接对象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschools","root","sss");
System.out.println("连接成功"); //如果上一句话成功连接数据库,则会执行此句
//3.写sql语句并执行
String sql = "select * from subject";
stmt = conn.createStatement(); //创建一个Statement对象来将SQL语句发送到数据库
//4.返回ResultSet
rs = stmt.executeQuery(sql);
while (rs.next()) {
int sNo = rs.getInt("subjectNo");
String sName = rs.getString("subjectName");
int classHours = rs.getInt("classHours");
int gId = rs.getInt("gradeID");
System.out.println(sNo+"\t"+sName+"\t"+classHours+"\t"+gId);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭连接
try {
rs.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}