JDBC提供了独立于数据库的统一API,用以执行SQL命令。JDBC由一下常用的接口和类组成:
DriverManager:用于管理JDBC驱动的服务类。程序中使用该类的主要功能是获取Connecttion对象,该类包含一下方法:
public static synchronized Connection getConnection(String url,String user,String pass) throws SQLException:该方法获取url对应数据库的连接。
Connection:代表数据库连接对象,每个Connection代表一个物理连接会话。要想访问数据库,必须获取数据库连接。该接口的方法有:
Statement createStatement() throws SQLExcetpion:该方法返回一个Statement对象。
PreparedStatement prepareStatement(String sql) throws SQLException:该方法返回预编译的Statment对象,
即将SQL语句提交到数据库进行预编译。
CallableStatement pripareCall(String sql)throws SQLexception:该方法返回CallableStatement对象,该对象用于调用存储过程。
上面三个方法都是返回用于执行SQL语句的Statement对象,PreparedStatement,CallableStatement是Statement的子类。只有获取得了Statement之后才可以执行SQL语句。
此外,Connection还有几个用于控制事务的方法:
Savepoint setSavepoint():创建一个保存点。
Savepoint setSavepoint(String name);以指定名字来创建一个保存点。
void setTransactionIsolation(int level):设置事务的隔离级别。
void rollback():回滚事务。
void rollback(Savepoint savepoint):将事务回滚到指定的保存点。
void setAutoCommit(boolean autoCommit):关闭自动提交,打开事务。
void commit();提交事务。
Statement
用于执行SQL语句的工具接口。该对象既可以用于执行DDL、DCL语句,也可以用于执行DML语句,还可以用于执行SQL查询。当执行SQL查询时,返回查询到的结果集。
ResultSet executeQuery(String sql)throws SQLException:该方法用于执行查询语句并返回查询结果对应的ResultSet对象。该方法只能用于执行查询语句。
int executeUpdate(String sql)throws SQLException:该方法用于DML语句,并返回受影响的行数;该方法也可以用于执行DDL,fangf 0.
boolean execute(String sql)throws SQLException:该方法可以执行任何SQL语句,如果执行返回后第一个结果为ResultSet对象,则返回true;如果执行
后第一个结果为受影响的行数或没有任何结果,则返回false。
PreparedStatement
预编译的Statement对象。是Statement的子接口,它允许数据库预编译SQL语句,以后每次只改变SQL命令的参数避免数据库没都要变量sql语句:
void setXxx(int parameterIndex,Xxx value)
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// TODO Auto-generated method stub
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/testdatabase", "root", "123456");
Statement stmt = conn.createStatement();
// stmt.executeUpdate("create table jdbc_test" + "(jdbc_id int auto_increment primary key,"+"jdbc_name varchar(255),"+"jdbc_desc text);");
ResultSet rs = stmt.executeQuery("select * from wawa");
int result = stmt.executeUpdate("insert into jdbc_test (jdbc_name,jdbc_desc) values ('axb','man');");
//
// while(rs.next()){
// System.out.println(rs.getString(2));
// }
rs.close();
stmt.close();
conn.close();
}