什么是JDBC?
Java语言访问数据库的一种规范,是一套API
JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库。比如建立数据库连接、执行SQL语句进行数据的存取操作。
连接一旦建立,就可用来向它所涉及的数据库传送SQL语句。JDBC对可被发送的SQL语句类型不加任何限制。这就提供了很大的灵活性,即允许使用特定的数据库语句或甚至于非SQL语句。
JDBC提供了三个类,用于向数据库发送SQL语句。Connection接口中的三个方法可用于创建这些类的实例。下面列出这些类及其创建方法:
(1)Statement:由方法createStatement所创建。Statement对象用于发送简单的SQL语句。
(2)PreparedStatement:由方法prepareStatement所创建。PreparedStatement对象用于发送带有一个或多个输入参数(IN参数)的SQL语句。PreparedStatement拥有一组方法,用于设置IN参数的值。执行语句时,这些IN参数将被送到数据库中。PreparedStatement的实例扩展了Statement,因此它们都包括了Statement的方法。PreparedStatement对象有可能比Statement对象的效率更高,因为它已被预编译过并存放在那以供将来使用。
(3)CallableStatement:由方法prepareCall所创建。CallableStatement对象用于执行SQL储存程序─一组可通过名称来调用(就象函数的调用那样)的SQL语句。CallableStatement对象从PreparedStatement中继承了用于处理IN参数的方法,而且还增加了用于处理OUT参数和INOUT参数的方法。
不过通常来说createStatement方法用于简单的SQL语句(不带参数)、prepareStatement方法用于带一个或多个IN参数的SQL语句或经常被执行的简单SQL语句,而prepareCall方法用于调用已储存过程
例:import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
public static void main(String[] args) {
//声明一个Connection对象
Connection conn = null;
Statement st =null;
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获得连接 DriverManager.getConnection(url,username,pwd);
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
System.out.println("连接数据库成功!连接对象为"+conn);
String name = "刚刚";
int age = 20;
String strain="藏獒";
int love = 800;
StringBuffer sb = new StringBuffer("insert into pet (name,age,strain,love) values ('");
sb.append(name+"',");
sb.append(age+",'");
sb.append(strain+"',");
sb.append(love+")");
System.out.println(sb.toString());
String sql = sb.toString();
//Statement 将Sql语句发送给数据库 并让数据库执行
//3.创建Statement对象
st = conn.createStatement();
//4.用st对象发送sql语句到数据库并执行
st.executeUpdate(sql);
//sql语句发送给数据库后 数据库需要对sql语句进行编译 之后再去执行
} catch (Exception e) {
System.out.println("连接失败");
e.printStackTrace();
}finally{
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}