一、简介:
JDBC(Java Data Base Connectivity)是一种用于执行SQL语句的javaAPI,由一组用java语言编写的类和接口组成。
从结构上看,JDBC是Java语言访问数据库的一套接口集合。从本质上看,JDBC是调用者(开发人员)与执行者(数据库厂商)的一种协议。
二、使用:
1、导包
创建工程后,在工程下创建lib文件夹,导入mysql-connector-java-5.0.4-bin。
JDBC的类库包含在两个包中,即java.sql包和javax.sql包。java.sql包提供了JDBC的基本功能,核心类库。javx.sql包作为JDBC2.0的可选包引入,提供一些扩展功能和高级操作。
2、加载驱动程序
通过调用Class.forname(String driverClassname)方法,加载相应的驱动程序。
//SQL Servr
Class.forname("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//Mysql
Class.forname("com.");
//Oracle
Class.forname("");
3.创建数据库连接
DriverManager类相当于驱动程序的管理器,负责注册JDBC驱动程序,建立连接。最常用的方法是getConnection(),使用它创建连接。
//数据库连接
//ODBC
String url="jdbc:odbc:数据库名称";
//SQL Server
String url="jdbc:sqlserve://localhost:1433;databaseName=数据库名称";
//Mysql
String url="jdbc:mysql://localhost:3306/数据库名称";
//Oracle
String url="jdbc:oracle:thin:@localhost:1521:数据库名称";
//用户名
String user="用户名";
//密码
String password="密码";
//进行连接
Connection conn=DriverManager.getConnection(url,user,password);
4.创建Statement对象,用于执行SQL语句
Connection提供了createStatement()方法用于创建Statement对象,该对象用于执行不带参数的SQL语句;
Connection提供了preparedStatement()方法用于创建PreparedStatement对象,该对象用于执行带参数的SQL语句。
//Statement
Statement st=conn.createStatement();
//PrepareStatement
PreparedStatement st=conn.preparedStatement(sql);
5.执行SQL操作
(1).Statement接口执行不带参数的SQL语句
ResultSet executQuery(String sql):执行查询语句,返回ResultSet对象;
int executeUpdate(String sql):执行更新类语句,返回影响行数;
boolean execue(Sring sql):执行语句,如果返回ResultSet对象,返回true,否则返回false;
(2).PreparedStatement接口继承Statement接口,用于执行带参数的SQL语句,SQL语句中用“?”占位
ResultSet executQuery():执行查询语句,返回ResultSet对象;
int executeUpdate():执行更新类语句,返回影响行数;
void setXxx(int i,Xxx x):将SQL第i个参数的值设置为x。
例:
String sql="insert into zgb(a,bc,c) values(?,?,?)";
PreparedStatement st=conn.preparedStatement(sql);
st.setString(1,a);
st.setString(2,b);
st.setString(3,c);
int n=st.executeUpdate();
6.对返回对象操作
ResultSet对象表示查询返回的结果集。
void first():将指针移到第一行,若存在返回true,否则返回false;
boolean next():将指针移到下一行(指针最初在第一行之前),若存在返回true,否则返回false;
Xxx getXxx(int i):返回第i个的值;
Xxx getXxx(String name):返回属性名为name的值。
7.关闭连接
rs.close();
st.close();
conn.close();