日期:2014-05-16  浏览次数:20437 次

JDBC及操作数据库步骤

概念


  JDBC-数据库连接,是由一些类和接口构成的API,是J2SE的一部分,有java.sql、javax.sql包组成。下面看一下JDBC API与应用程序和数据库驱动及数据库之间的关系:

  

  可以看出JDBC是Sun公司为应用程序与数据库驱动之间提供的一组接口(规范)。


操作数据库的步骤(以mySql为例)


 与ODBC类似,分为以下几步:

  1.      注册驱动

  2.      建立连接

  3.      创建执行sql语句的对象

  4.      执行语句

  5.      处理执行结果

  6.      释放资源


 下面进行详解:

  1. 注册驱动

   常用的有3种方式:

   1)      直接注册驱动:

   DriverManager.registerDriver(com.mysql.jdbc.Driver);这种方式要求程序首先要引入驱动包,否则无法通过编译。而且它可能会造成DriverManager中产生两个一样的驱动,并对具体的驱动类产生依赖,所以不推荐使用。

   2)      键值对方式:

   System.setProperty(“jdbc.drivers”,”com.mysql.jdbc.Driver”);同时注册多个驱动则用冒号隔开。这种方式如果事先不引入驱动包的情况下能通过编译(因为操作的都为字符串,运行时肯定不行啦),所以虽然不会对具体的驱动类产生依赖,但注册不太方便,所以很少使用。

   3)      Class.forName方式(类似反射):

   Class.forName(“com.mysql.jdbc.Driver”); Class.forName函数的作用是根据类的名字将类装载到虚拟机中(并未实例化);这种方式也不会对具体的驱动类产生依赖,而且使用很方便,所以推荐使用

  2. 建立连接

   Connection conn=DriverManager.getConnection(url,uid,pwd);

   url格式:JDBC:子协议:子名称//主机名:端口/数据库名?key=value&…

       例如:jdbc:mysql://localhost:8086/jdbc;uid和pwd也可以用key=value的方式告诉数据库。

            其它参数:如,userUnicode=true&characterEncoding=gbk

  3. 创建执行sql语句的对象

   这里有两个对象可以使用:Statement、PreparedStatement对象

   一般来说有参数的sql操作都用PreparedStatement对象,因为它有防止sql注入等优点。两者的区别这里不多介绍,创建语句:(假设conn为数据库连接对象)

   Statement st=conn.createStatement();

   PreparedStatement ps=conn.prepareStatement(strSql);

   可以看出在创建PreparedStatement对象时即需要指明要执行的sql语句,因为它会对sql语句进行预处理,例如进行一些防止sql注入的字符过滤等;而Statement则在执行sql动作时才指明sql语句。