jdbc

来源:互联网 发布:数据相似度算法 编辑:程序博客网 时间:2024/04/29 20:58

JDBC
简单地说,jdbc达到的目的是让java程序员编写数据库的时候,可以有统一的操作接口,不需要依赖特定的数据库API,
达到编写一次,处处运行!机制简单的就是:

                       >    MYSQL   Driver
 应用程序——》JDBC------> Oracle    Driver
                       >    DB2     Driver
***************************

主要讲Pure Java Driver这种类型!

对于JDBC中的类或者接口必须查看API才能了解彻底!

JDB进行数据库操作的步骤:
 1、加载mysql驱动
   Class.forName("com.mysql.jdbc.Driver").newInstance();
 2、jianli Connection连接对象
   String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPwd;
   Connection conn=DriverManager.getConnection(url);
 3、建立Statement语句对象
   Statement st=conn.createStatement();
   PreparedStatement stmt=conn.prepareStatement(String sql)
          创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。

  一个静态的一个动态的执行SQL语句!
 4、执行SQL语句
   st.executeUpdate("sql语句"); 返回int
  或者
   stmt.executeQuery();
   在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
 5、关闭连接
   conn.close();
 
*********************
主要的类:
Class.forName("com.mysql.jdbc.Driver").newInstance();

Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。
每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。
forName()这是Class类的一个方法返回与带有给定字符串名的类或接口相关联的 Class 对象。
返回的Class对象调用newInstance()创建此 Class 对象所表示的类的一个新实例。
Class.forName("com.mysql.jdbc.Driver")返回的是一个Class类型,而不是加载的那个类的类别。用Class接受。
***
每个数据库驱动程序都会提供一个Driver接口给应用程序调用。
Driver是每个驱动程序类必须实现的接口。
com.mysql.jdbc.Driver是一个类。实现了Driver接口。
调用Class.forName()会自动加载和注册驱动程序类。然后返回返回这个类的对象。

Driver:它有方法Connection connect(String url, Properties info) 试图创建一个到给定 URL 的数据库连接。

***
DriverManager:管理一组 JDBC 驱动程序的基本服务。
作为初始化的一部分,DriverManager 类会尝试加载在 "jdbc.drivers" 系统属性中引用的驱动程序类。
应用程序不再需要使用 Class.forName() 显式地加载 JDBC 驱动程序。
当前使用 Class.forName() 加载 JDBC 驱动程序的现有程序将在不作修改的情况下继续工作。

在调用 getConnection 方法时,DriverManager 会试着从初始化时加载的那些驱动程序以及使用
与当前 applet 或应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。

getConnection(String url) 试图建立到给定数据库 URL 的连接。
返回值  很重要。返回的是实现了Connection接口的类的实例。
也就是说 在加载驱动之后,DriverManager会尝试与之建立连接,
返回实现了Driver以及Connection接口的实例。
***
Connection接口:
与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。
有许多方法,这些方法在Connection中是抽象的也就是没有方法体,但是通过
con = DriverManager.getConnection(url, username, password);返回的是
已经实现Connection的实例。这个实例实现了所有的Connection中的方法。


Statement createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库。
PreparedStatement stmt=conn.prepareStatement(String sql)创建一个动态执行SQL语句对象。
***
Statement接口:用于执行静态 SQL 语句并返回它所生成结果的对象。
返回值根据使用的方法,会不同,在没有返回ResultSet对象的时候,不能对结果在操作。

或者
PreparedStatement可以动态的执行。
返回值根据使用的方法,会不同,在没有返回ResultSet对象的时候,不能对结果在操作。

最后关闭Connection的连接。
因为DriverManager.getConnection(url, username, password);返回的是一个Connection类型的连接。

***
接口 ResultSet:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
ResultSet 对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。next 方法将光标移动到下一行;
因为该方法在 ResultSet 对象没有下一行时返回 false,所以可以在 while 循环中使用它来迭代结果集。

***
ResultSetMetaData:ResultSet是用来表示查询到的数据,ResultSetMetaData是用来查询例如:字段名,表名称,字段类型的的信息。
***
LOB的读写:可以将文件写入数据库,可以在BLOB或者CLOB数据类型。
***
事务:是一组原子操作的工作单元,这个工作单元中的所有原子操作在进行期间与其他事务隔绝,免于数据 来源相互更新而发生混乱。
使用:*关闭自动提交事务,设置连接的自动提交事务属性为false;
      *捕获执行代码,如果执行过程顺利,提交事务,一旦发生异常,会滚事务,(rollback);
      *关闭连接;

原创粉丝点击