烟酒生-

导航

一个比较规范的JDBC的示例

  1. 完整的java开发中JDBC连接数据库程序

  2. JDBC连接数据库   (本示例中数据库为MYSQL, root , 000000)运行前请自行导入mysql 驱动jar包。
  3. •创建一个以JDBC连接数据库的程序,包含6个步骤:   
  4.          //1、注册驱动      
                                Class.forName(“com.mysql.jdbc.Driver”);

                                推荐这种方式,不会对具体的驱动类产生依赖。

                                DriverManager.registerDriver(com.mysql.jdbc.Driver);

                                会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。

                                System.setProperty(“jdbc.drivers”, “driver1:driver2”);

                                虽然不会对具体的驱动类产生依赖;但注册不太方便,所以很少使用。

    注册驱动的话注册一次就可以了,所以稍后会对这部分进行处理。
          
             //2、建立连接
    1.        Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/study","root","000000");
  5.   
        
             //3、创建语句
  6.                          Statement st=conn.createStatement();
           
             //4、执行语句
  7.                             ResultSet rs=st.executeQuery("select SNO from student");
          
               //5、处理结果
  8.                              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、释放资源
  9.                            
                           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);
		}
	}
}

 

posted on 2014-08-04 15:43  烟酒生-  阅读(114)  评论(0)    收藏  举报