JDBC访问数据库之MySql

what: jdbc是一组API

when:  应用程序和数据库通过JDBC实现数据交互

how:(严格来说分为以下五步:

    Class.forName()加载驱动——

    DriverManager获取Connection连接——

   创建Statement(适用于简单的SQL语句,消耗小)/PreparedStatement(扩展了statement,开销大),数据库执行SQL语句——

    返回ResultSet查询结果——

    释放资源

第一步,放在一个公共包里面(表已经建立好的基础上,并未放在配置文件中),然后连接:

 

public class DBUtils {

    public static Connection getConn() {
        Connection conn = null;
        // MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
        // 避免中文乱码要指定useUnicode和characterEncoding
        // 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
        String url = "jdbc:mysql://localhost:3306/StudySystem?"
                + "user=root&password=123456&useUnicode=true&characterEncoding=UTF8";
        try {
            Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
            // 一个Connection代表一个数据库连接
            conn = DriverManager.getConnection(url);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

}

第二步:在需要的对象下执行相应的操作,此操作为获取

public List<Student> getStudent()
	{
            //controller--service--dao通过三层调用写在此数据库操作类
                //创建数据库连接对象
		Connection conn = DBUtils.getConn();
		ResultSet rs=null;
                //集合类来保存student这种类型
		List<Student> stus=new ArrayList<Student>();
		String sql = "select * from STUDENT ";
		try {
                       
			PreparedStatement pStatement = conn.prepareStatement(sql);//预处理			
			rs = pStatement.executeQuery();	//执行	
			while(rs.next())//将查询的结果放在集合类中,只要有下一条数据就不断的执行
			{
				Student s=new Student();//创建学生对象
				s.setId(rs.getInt(1));
				s.setStudentNo(rs.getString(2));
				s.setPassword(rs.getString(3));
				s.setStudentName(rs.getString(4));
				s.setSex(rs.getString(5));
				s.setSubject(rs.getString(6));
				s.setStuClass(rs.getString(7));
				stus.add(s);//每创建一个就放在对象中
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			DBUtils.closeConn(conn);//数据库关闭
		}
		return stus ;
	}

第三步:关闭数据库链接,释放资源(注意关闭和打开的顺序相反)

 public static void closeConn(Connection conn) {
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != conn) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/Pony_18/article/details/85382336