22---数据库编程04(JDBC操作步骤)

来源:互联网 发布:涿州网络品牌推广公司 编辑:程序博客网 时间:2024/05/31 19:53
 

因为不同的数据库实现的方式不同所以我们得需要数据库开发商提供的数据库的驱动;
然后连接数据库;
然后进行数据库的操作;
因为数据库的资源有限,所以一定要关闭数据库连接。
下载驱动jar包,放到D:盘,并将该目录加载到classpath中;
通过Class.forName(包.类名称)加载驱动---反射机制;

java连接数据库时为什么要加载数据库驱动?
 其实数据库驱动和别的驱动性质一样,数据库这个产品不是用java实现的,但是如果想
 被java所使用则必须让java能用,这是驱动就产生了,驱动就是启动一个过渡的作用;
 所以java想去连接数据库就必须加装该数据库的驱动--Class.forName(...);
 又因为数据库种类繁多不断更新,所以这样java只需提供个接口即可,不同的数据库生产商
 按照该结构的要求去实现、创建数据库驱动就行了;
 所以java就提供了一个DriverManager类来充当与驱动链接的接口;

数据库驱动又是怎么跟DriverManager这个类联系到的呢?
 Class.forName(包.类名称)利用反射机制创建了一个Class对象,而该驱动程序有个静态代码块
 这样加载驱动时,jvm就在内存中为该静态代码块开辟了空间,而该静态代码块中有个
   public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    // ~ Static fields/initializers
    // --------------------------------------------- //
    // Register ourselves with the DriverManager
    //   
    static {
       try {
                 java.sql.DriverManager.registerDriver(new Driver());
             } catch (SQLException E) {
                 throw new RuntimeException("Can't register driver!");
             }
     }
   // ~ Constructors
    // -----------------------------------------------------------   
   /** *//**//**
     * Construct a new driver and register it with DriverManager
     *
     * @throws SQLException
     *             if a database error occurs.
     */
    public Driver() throws SQLException {
        // Required for Class.forName().newInstance()   
    }
   } 这样该驱动就注册到了DriverManager这个类上了;
   
  
java连接数据库就是为了取得与数据库的连接:
 DriverManager提供了一个方法可以得到与数据库的连接;


MySQL数据库的连接地址格式:
jdbc:mysql://ip地址:端口号/数据库名称

 

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
public class Demo{
 //定义数据库的驱动程序
 //下面的包.类名称要根据驱动jar中Driver.class来定,不同点jar不一样
 public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
 //定义数据库的连接地址:
 public static final String DBURL="jdbc:mysql://localhost:3306/lid";
 //定义数据库的用户名
 public static final String DBUSER="root";
 //定义数据库的密码
 public static final String DBPASSWORD="123";
 public static void main(String args[]){
  Connection conn=null;
  try{
   //加载数据库驱动
   Class.forName(DBDRIVER);//创建一个该驱动类的Class对象;
   }
  catch(ClassNotFoundException e){
   e.printStackTrace();
   }
  try{
   conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
   }
  catch(SQLException e){
   e.printStackTrace();
   }
  System.out.println(conn);//如果可以打印说明连接成功
  try{
   conn.close();
   }
  catch(SQLException e){
   e.printStackTrace();
   }
   
  }
 }