JDBC基本知识点整理汇总

jdbc作为最基础也最重要的javaAPI之一,其意义无言自明。做为java语言的初级使用者,免不了的要与数据库打交道,而操做数据库的最简单工具能够说就是jdbc了。而且编码者若是想学习掌握更高级的数据库操做技术好比说orm框架例如hibernate或者mybatis等,对其熟悉也是有事半功倍的效果。本着方便本身帮助他人的目的现把网上查找到的jdbc的基本知识点整理以下,java

jdbc编程步骤:

注册加载一个Drvier驱动:

Class.forName("oracle.jdbc.driver.OracleDriver");

建立数据库链接

String url="jdbc:oracle:thin:@172.16.0.6:1521:tangjl";
String user="openlab";
String password="open123";
Connection Con=DriverManager.getConnection(url,user,password);

Connection 链接是经过DriverManager的静态方法getConnection方法获得的这个方法的实质时把参数传到实际的Dirver中的connect()方法中来得到数据库链接.mysql

Jdbc:oracle:this:(协议)@xxx.xxx.xxx:xxx(ip地址及端口号):xxx(使用数据库名)sql

Mysqlurljdbc:mysql://localhost:3306/test数据库

得到一个statement对象(PreparedStatement)

String sql="select * from a_yyy";
Statement s=con.createStatment();
PreparedStatement ps=con.prepareStatement(sql);

经过Statement执行sql语句:

Statement接口表明了一个数据库的状态,在向数据库发送相应的SQL语句时,都须要建立Statement接口或者PreparedStatement接口。在具体应用中,Statement主要用于操做不带参数(能够直接运行)的SQL语句,好比删除语句、添加或更新。编程

Sta.execute():适合任何语句api

sta.executeQuery(sql):适合查询语句.返回一个查询结果集.mybatis

sta.executeUpdate(sql);适合增删改建立语句,返回值为影响记录的条数oracle

//////////////////////////////////////////////////框架

PreparedStatement:预编译的Statement .工具

如果PreparedStatement:获得ps以后:

一样的,如果增删改建立的就用ps.executeUpdate();如果查询则用ps.executeQuery()返回一个结果集;

预编译的PreparedStatement,对于执行同构的sql语句来讲,它的效率比较高,提高性能.

第一步:经过链接得到PreparedStatement对象,用带占位符(?)sql语句构造。

PreparedStatement pstm = con.preparedStatement(“select * from test where id=?”);

第二步:设置参数

pstm.setString(1“ganbin”);

pstm.setDate(2,date);

第三步:执行sql语句

Rs = pstm.excuteQuery();

statement发送完整的Sql语句到数据库不是直接执行而是由数据库先编译,再运行,PreparedStatement是先发送带参数的Sql语句,再发送一组参数值.若是是同构的sql语句,PreparedStatement的效率要比statement高。而对于异构的sql则二者效率差很少。

同构:两个Sql语句可编译部分是相同的,只有参数值不一样。

异构:整个sql语句的格式是不一样的

注意点:1、使用预编译的Statement编译多条Sql语句一次执行

2、能够跨数据库使用,编写通用程序

              3、能用预编译时尽可能用预编译


处理查询结果集:

只有执行了select语句才有结果集

六关闭数据源

关闭细节:最早获得的,最后关闭.

元数据:是关于数据的信息,例如类型或者容量,经过JDBC API 能够访问:

1 数据库元数据:

使用Connection.getMetadata方法返回DataBaseMetaData引用.

2 结果集元数据
a使用ResultSet.getMetadata方法返回ResultSetMetaData引用

B能使用getColumnCount等类的方法获取结果集信息.(api)


事务

事务处理三步曲:

connection.setAutoCommit(false); //把自动提交关闭

正常的DB 操做//如有一条SQL 语句失败了,自动回滚

connection.commit() //主动提交或connection.rollback() //主动回滚

完整代码:

try{
   con.setAutoCommit(false); //step1 把自动提交关闭
   Statement stm = con.createStatement();
   stm.executeUpdate("insert into person(id, name, age) values(520, 'X-Man', 18)");
   stm.executeUpdate("insert into Person(id, name, age) values(521, 'Super', 19)");
   //step2 正常的DB 操做
   con.commit(); //step3 成功主动提交
} catch(SQLException e){
   con.rollback();//step3 失败则主动回滚
}

元数据:

JDBC经过元数据(MetaData)来得到具体的表的相关信息,能够查询数据库中有哪些表,表有哪些字段,以及字段的属性等.MetaData中经过一系列getXXX将这些信息返回给咱们。

数据库元数据 DatabaseMetaData 使用connection.getMetaData()得到

MetaData包括: 包含了关于数据库总体元数据信息。 

结果集元数据 ResultSetMetaData 使用resultSet.getMetaData()得到

比较重要的是得到表的列名、列数等信息。

结果集元数据对象:ResultSetMetaData meta = rs.getMetaData();

字段个数:meta.getColomnCount();

字段名字:meta.getColumnName();

字段JDBC类型:meta.getColumnType();

字段数据库类型:meta.getColumnTypeName();

数据库元数据对象:DatabaseMetaData dbmd = con.getMetaData();

数据库名=dbmd.getDatabaseProductName();

数据库版本号=dbmd.getDatabaseProductVersion()

数据库驱动名=dbmd.getDriverName()

数据库驱动版本号=dbmd.getDriverVersion()

数据库Urldbmd.getURL()

该链接的登录名=dbmd.getUserName();

相关文章
相关标签/搜索