这里主要是回顾一下jdbc的写法,我们后面基本都用orm框架和spring全面接管了,不会使用jdbc开发,但是jdbc是基础也是重点,于是写这篇来回顾一下。
package com.mashibing;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;//如果需要建议连接,java中提供了一套标准,数据库厂商来进行实现,包含实现子类,实子类的jar文件再哪?
//一般情况下存放在安装目录下
public class JDBCTest {public static void main(String[] args) throws Exception {//1、加载驱动:/** 当执行了当前代码之后,会返回一个Class对象,在此对象的创建过程中,会调用具体类的静态代码块* */ Class.forName("oracle.jdbc.driver.OracleDriver"); //2、建立连接//第一步中已经将driver对象注册到了drivermanager中,所以此时可以直接通过DriverManager来获取数据库的连接/** 需要输入连接数据库的参数* url:数据库的地址* username:用户名* password:密码** */Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");//3、测试连接是否成功System.out.println(connection);//4、定义sql语句//只要填写正常执行的sql语句即可String sql = "select * from emp";//5、准备静态处理块对象,将sql语句放置到静态处理块中,理解为sql语句放置对象/** 在执行sql语句的过程中,需要一个对象来存放sql语句,将对象进行执行的时候调用的是数据库的服务,数据库会从当前对象中* 拿到对应的sql语句进行执行***/Statement statement = connection.createStatement();//6、执行sql语句,返回值对象是结果集合/** 将结果放到resultset中,是返回结果的一个集合* 需要经过循环迭代才能获取到其中的每一条记录** statement在执行的时候可以选择三种方式:* 1、execute:任何SQL语句都可以执行* 2、executeQueryL只能执行查询语句* 3、executeUpdate,只能执行语句* */ResultSet resultSet = statement.executeQuery(sql);//7、循环处理//使用while循环,有两种获取具体值的方式,第一种通过下表索引编号来获取,从1开始,//第二种是通过列名来获取,哪种好?推荐使用列名,列明一般不会发生修改while(resultSet.next()){int anInt = resultSet.getInt(1);System.out.println(anInt);String ename = resultSet.getString("ename");System.out.println(ename);System.out.println("-----------------");}//8、关闭连接statement.close();connection.close();}
}
package com.mashibing.util;import java.sql.*;
/**因为连接数据库有很多重复的代码操作,我们可以对其进行封装*/
public class DBUtil { public static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";public static final String USERNAME = "scott";public static final String PASSWORD = "tiger";static {try {//加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");} catch (ClassNotFoundException e) {e.printStackTrace();}}/*** 获取数据库连接* @return 返回连接对象*/public static Connection getConnection(){try {return DriverManager.getConnection(URL,USERNAME,PASSWORD);} catch (SQLException e) {e.printStackTrace();}return null;//抛异常的情况下}/** 关闭数据库连接* */public static void closeConnection(Connection connection){if(connection!=null){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}} public static void closeConnection(Connection connection, Statement statement){if (statement!=null){try { statement.close();} catch (SQLException e) {e.printStackTrace();}}if(connection!=null){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}public static void closeConnection(Connection connection, Statement statement, ResultSet resultSet){if (resultSet!=null){try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}if (statement!=null){try {statement.close();} catch (SQLException e) {e.printStackTrace();}}if(connection!=null){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}
}