一个比较规范的JDBC的示例
-
完整的java开发中JDBC连接数据库程序
- JDBC连接数据库 (本示例中数据库为MYSQL, root , 000000)运行前请自行导入mysql 驱动jar包。
- •创建一个以JDBC连接数据库的程序,包含6个步骤:
- //1、注册驱动
Class.forName(“com.mysql.jdbc.Driver”);
推荐这种方式,不会对具体的驱动类产生依赖。
DriverManager.registerDriver(com.mysql.jdbc.Driver);会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。
System.setProperty(“jdbc.drivers”, “driver1:driver2”);虽然不会对具体的驱动类产生依赖;但注册不太方便,所以很少使用。
注册驱动的话注册一次就可以了,所以稍后会对这部分进行处理。
//2、建立连接- Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/study","root","000000");
-
//3、创建语句 - Statement st=conn.createStatement();
//4、执行语句 - ResultSet rs=st.executeQuery("select SNO from student");
//5、处理结果 - while(rs.next()){
System.out.println(rs.getObject(1)/*+"\t"+rs.getObject(2)+"\t"+rs.getObject(3)+"\t"+rs.getObject(4)+"\t"+rs.getObject(5)*/);
};
//6、释放资源 -
if(rs!=null) try { rs.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if(st!=null) try { st.cancel(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if(conn!=null) try { conn.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }释放资源也相当的麻烦,所以稍后会放进工具类中,以便使用的时候调用。
数据库的用户名和密码,也应该放在工具类中,以便后期修改方便。
工具类JdbcUtils.java
/**
*
*/
package com.primeton.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/*
* *
* @author <a href="mailto:liht@primeton.com">烟酒生 </a>
*
*/
public final class JdbcUtils {
private static String url="jdbc:mysql://localhost:3306/study";
private static String user="root";
private static String password="000000";
//属性和方法能定义成私有的就定义成私有的,以后修改自己的属性和方法不会对别人造成影响。
private JdbcUtils(){
//把构造方法设置成私有的,别人就无法实例化,
//一般工具类根本不需要构造成实例,所以把构造方法做成私有就好。
//为了使用这个类中的方法 ,一种方法是单例,另外一种是构造一些public static方法,而不用单例
}
//静态的代码块会在这个类在装载到虚拟机的时候被执行一次。所以可以把注册驱动的代码放在静态代码块中
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
throw new ExceptionInInitializerError(e);
}
}
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(url,user,password);
}
public static void free(ResultSet rs,Statement st,Connection conn){
try{
if(rs!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}finally{
try{
if(st!=null)
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}finally{
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
主类RealDBConnect.java
/**
*
*/
package com.primeton.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* @author <a href="mailto:liht@primeton.com">烟酒生</a>
*
*/
public class RealDBConnect {
public static void main(String[] args) throws SQLException{
template();
}
static void template() throws SQLException{
Connection conn=null;
Statement st=null;
ResultSet rs=null;
try {
//2、建立连接
conn=JdbcUtils.getConnection();
//3、创建语句
st=conn.createStatement();
//4、执行语句
rs=st.executeQuery("select * from student");
//5、处理结果
while(rs.next()){
System.out.println(rs.getObject(1)+"\t"+rs.getObject(2)+"\t"+rs.getObject(3)+"\t"+rs.getObject(4)+"\t"+rs.getObject(5));
}
}finally{
JdbcUtils.free(rs, st, conn);
}
}
}
浙公网安备 33010602011771号