jdbc的入门案例 ##
package on.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.mysql.jdbc.Driver;
/*
* 这个类是jdbc的入门案例
*/
public class HelloJDBC {
/**
* 开发步骤:
* 1.注册驱动
* 2.获取数据库的连接
* 3.获取传输器
* 4.执行SQL
* 5.遍历结果集
* 6.关闭资源
* @throws SQLException
*/
@Test
public void helloJDBC() {
Connection conn=null;
Statement st =null;
ResultSet rs=null;
try {
/**
* 注册驱动
*作用:让java程序和数据库产生连接关系
*缺点:造成驱动被注册了两次
*使程序和驱动产生了紧耦合
*解决方法:
* class.forName("com.mysql.jdbc.Driver");
*/
//1.注册驱动com.mysql.jdbc.Driver
DriverManager.registerDriver(new Driver());
/**
* 数据库的url
* 作用
* 通过DriverManager对象来获取到的,并且传入三个参数,数据库的url,数据库的用户名
* 数据库的密码,用来获取Connection对象
*
*/
//2.获取数据库的连接 java.sql.Connection
conn=DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jt_db",
"root", "root");
/**
* 数据库连接对象Connection
* 作用:
* 用来代表数据库连接的对象,是JDBC中非常重要的一个对象,用来获取传输器
* 提供常用的方法:createStatement ---返回一个传输器对象
* prepareStatement---返回一个带有预编译效果的传输器
*/
//3.获取传输器 java.sql.Statement
st=conn.createStatement();
/**
* 传输器对象Statement
* 作用:
* 用来执行SQL
*/
//4.执行SQL,查询account表,java.sql.ResultSet
String sql="select * from account";
rs=st.executeQuery(sql);
/**
* 结果集对象ResultSet
* 作用
* 用来封装执行SQL后查询到的结果
*/
//5.遍历结果集
while(rs.next()){
String id=rs.getString(1);
String name =rs.getString(2);
String money=rs.getString(3);
System.out.println("id:"+id+",name:"+name+",money:"+money);
}
/**
* 提供的方法:
* Next()--有指针的效果,查询到结果集中有数据返回true,没有
* getString( int index) ---根据索引值获取结果集的数据
*/
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//为了保证资源一定会被释放,需要放在finally中
//6.关闭资源
if(conn!=null){//防止空指针异常
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//当91发生异常时需要加finally,手动制为null,等待GC来回收
conn=null;
}
}
//为了提高查询健壮性,需要加判断
if(st!=null){
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
st=null;
}
}
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
rs=null;
}
}
}
}
}