首页 > 代码库 > JDBC初体验

JDBC初体验

DriverManager:用于注册驱动

    DriverManager.registerDriver(new com.mysql.jdbc.Driver())  这个会导致注册多次,而且强烈以来数据库驱动jar,所以不建议使用

      改成Class.forName("com.mysql.jdbc.Driver");采用了反射机制,解耦合,加载驱动类

      Oracle数据库为jdbc:oracle:thin:@localhost:1521:sid

connection:表示与数据库创建的连接

    Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名","root","root")

                            协议:子协议/IP:端口号/数据库

    还有利用参数传值进行连接 getConnection("jdbc:mysql://localhost:3306/数据库名?user=root&passwors=root")

statement:操作数据库sql语句的对象,为了安全,一般采用其子类preparestatement

    Statement stmt=conn.creatStatement();

    这个对象有三个主要方法:a. ResuleSet executeQuery(string sql)  b.int executeUpdate(string sql)  c.boolean execute(string sql)

resultset:结果集或一张虚拟表(两个作用:封装结果集getObject()跟提供可移动游标的方法,例如next()跟previous())

    ResuleSet rs=stmt.executeQuery("sql语句")

处理结果

    while(rs.next){

      ...

    }

关闭资源: rs stmt conn都要关闭,注意要进行try catch。

DBUtil数据库连接工具类:

public class DBUtils {
    private static String driverClass;
    private static String url;
    private static String username;
    private static String password;
    
    static{
        //此对象是用于加载properties文件数据的
        ResourceBundle rb = ResourceBundle.getBundle("dbinfo");
        driverClass = rb.getString("driverClass");
        url = rb.getString("url");
        username = rb.getString("username");
        password = rb.getString("password");
        try {
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    
    //得到连接的方法
    public static Connection getConnection() throws Exception{
        return DriverManager.getConnection(url, username, password);
    }
    
    //关闭资源的方法
    public static void closeAll(ResultSet rs,Statement stmt,Connection conn){
        //关闭资源
        if(rs!=null){
            try {
                rs.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            rs = null;
        }
        if(stmt!=null){
            try {
                stmt.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            stmt = null;
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            conn = null;
        }
    }
}

 

数据库CRUD操作类:public void testInsert(){
        Connection conn = null;
        PreparedStatement stmt = null;
    
        try {
            conn = DBUtils.getConnection();
            stmt = conn.prepareStatement("INSERT INTO users VALUES(?,?,?,?,?)");
            stmt.setInt(1, 5);
            stmt.setString(2, "tom");
            stmt.setString(3, "333");
            stmt.setString(4, "tom@163.com");
            //stmt.setDate(5, new java.sql.Date(System.currentTimeMillis()));
            stmt.setString(5, "2015-09-11");
            
            int i = stmt.executeUpdate();
            if(i>0){
                System.out.println("success");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            DBUtils.closeAll(null, stmt, conn);
        }
    }

 

JDBC初体验