JDBC(Java Data Base Connectivity)基本用法

一、什么是JDBC JDBC(Java Database Connection)为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成.是java程序与数据库系统通信的标准APl。 JDBC API使得开发人员可以使用纯 java 的方式来连接数据库,并执行操作。 sun公司由于不知道各个主流商用数据库的程序代码,因此无法自己写代码连接各个数据库。因此,sun公司决定自己提供一套api,凡是数据库想与Java进行连接的,数据库厂商自己必须实现JDBC这套接口。而数据库厂商的JDBC实现,我们就叫它此数据库的数据库驱动。

二、使用JDBC访问数据库流程

三、JDBC常用接口

1、Driver接口 Driver接口由数据库厂家提供,对于java开发者而言,只需要使用Driver接口就可以了。 在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序。不同的数据库有不同的装载方法。 驱动就是各个数据库厂商实现的sun公司提出的JDBC接口,即对Connection等接口的实现类的jar文件。

装载Mysql驱动 Class.forName(“com.mysql.jdbc.Driver”); 装载Oracle驱动 Class.forName(“oracle.jdbc.driver.OracleDriver”);

2、DriverManage接口 一DriverManager是JDBC的管理层,作用于用户和驱动程序之间。 一DriverManager跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。

3、Connection接口 Connection与特定数据库的连接(会话),在连接上下文中执行SQL语句并返回结果。 DriverManager的getConnection()方法建立在JDBC URL中定义的数据库Connection连接上。

连接MYSQL数据库: Connection connection = DriverManager.getConnection(“jdbc:mysql://host:port/database”,”user”,”password”);

连接ORACLE数据库: Connection connection = DriverManager.getConnection(“jdbc:oracle:thin:@host:port:database”,”user”,”password”);

4、Statement接口 用于执行静态SQL语句并返回它所生成结果的对象。

三种Statement类: Statement: 由createStatement创建,用于发送简单的SQL语句。(不带参数的)

PreparedStatement:** 继承自Statement接口,由prepareStatement创建,用于发送含有一个或多个输入参数的sql语句。PreparedStatement对象,会进行预编译,比Statement对象的效率更高,并且可以防止SQL注入。我们一般都使用PreparedStatement。

CallableStatement: 继承自PreparedStatement,由方法prePareCall创建,用于调用存储过程。

常用的Statement方法: execute():运行语句,返回是否有结果集。 executeQuery():运行select语句,,返回ResultSet结果集。 executeUpdate():运行insert/update/delete操作,返回更新的行数。

5、ResultSet接口 Statement执行SQL语句时,返回ResultSet结果集。

ResultSet提供的检索不同类型字段的方法,常用的有: getString():获得在数据库里varchar、char等数据类型的对象。 getFloat():获得在数据库里Float类型的对象。 getDate():获得在数据库里Date类型的数据。 getBoolean():获得在数据库里面Boolean类型的数据。

依序关闭使用的对象及连接: ResultSet–>Statement–>Connection

package com.lgd.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;{(String[] args) {Connection connection = null;Statement statement = null;try {//1、加载驱动类Class.forName(“com.mysql.jdbc.Driver”);connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/testjdbc”,”root”,”liguodong”);System.out.println(connection);statement = connection.createStatement();/*String sqlone = “insert into user(username,pwd,regTime) values (‘苏三’,54423,NOW())”;statement.execute(sqlone);*//*String nameString = “宋八”;String sqltwo = “insert into user(username,pwd,regTime) values(‘”+nameString+”‘,54ds23,NOW())”;statement.execute(sqltwo);*///测试SQL注入String idString = “5 or 1=1”;String sql1 = “delete from user wherehljs-comment”>//这样会删除所有元素} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally{if(statement!=null){try {statement.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(connection!=null){try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}package com.lgd.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import java.sql.Statement;{(String[] args) {Connection connection = null;PreparedStatement statement = null;try {//1、加载驱动类Class.forName(“com.mysql.jdbc.Driver”);//2、建立与数据库的连接connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/testjdbc”,”root”,”liguodong”);//3、测试PreparedStatement的基本用法String sql1 = “insert into user(username,pwd,regTime) values (?,?,?)”;statement = connection.prepareStatement(sql1);/*statement.setString(1, “周杰伦”);//参数索引是从1开始计算,而不是0statement.setString(2, “fdsf323”);statement.execute();*//*//也可以使用setObject方法处理参数statement.setObject(1, “詹姆斯”);statement.setObject(2, “fdf323”);statement.execute();*/statement.setString(1, “德玛西亚”);statement.setString(2, “fdsfds3”);statement.setDate(3, new java.sql.Date(System.currentTimeMillis()));statement.execute();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally{if(statement!=null){try {statement.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(connection!=null){try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}package com.lgd.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;{(String[] args) {Connection connection = null;PreparedStatement statement = null;ResultSet rs1 = null;try {//1、加载驱动类Class.forName(“com.mysql.jdbc.Driver”);//2、建立与数据库的连接connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/testjdbc”,”root”,”liguodong”);//3、测试PreparedStatement的基本用法 ?占位符String sql1 = “select * from user where id>?”;statement = connection.prepareStatement(sql1);statement.setObject(1, 2);//把大于2的记录都取出来rs1 = statement.executeQuery();while(rs1.next()){System.out.println(rs1.getInt(1)+”—“+rs1.getString(2)+”—“+rs1.getString(3));}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally{//执行顺序resultset–>statement–>connection这样的关闭顺序!一定要将三个try-catch块分开写!if(rs1!=null){try {rs1.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(statement!=null){try {statement.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(connection!=null){try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}

天不负;卧薪尝胆,三千越甲可吞吴。

JDBC(Java Data Base Connectivity)基本用法

相关文章:

你感兴趣的文章:

标签云: