简单了解JDBC
首先我们通过下面这张图来了解JDBC操作数据库的过程并熟悉下过程中用到的几个常用类。
如图所示,java程序通过加载DriverManager和sql数据库建立connection之后,通过Statement或者通过PreparedStatement携带sql语句到sql数据库执行,并返回ResultSet集合给java程序。下面简单说下这几个常用的类。
DriverManager :
管理一组JDBC 驱动程序的基本服务,作用与用户和驱动程序之间。可以通过getConnection()方法获取Connection实例。
Connection:
数据库链接的实例,获取数据库链接后才能对数据进行操作。
Statement/PreparedStatement:
PreparedStatement继承了statement,都用于执行动态SQL语句。通过PreparedStatement执行,将会预编译,并保存到PreparedStatement实例中,可反复执行。
ResultSet:
用来临时存放数据库查询的结果集
简单例子:
1.创建JDBC建立connection的配置文件jdbc.properties
jdbc.dirver = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://10.158.224.15:32759/test?useUnicode=true&characterEncoding=utf-8 jdbc.username = root jdbc.password = 1234562.创建读取配置文件的PropertyUtil文件:
package utils; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Properties; /** * Created by fengxinzi on 17-9-25. */ public class PropertyUtil { public static final String PATH_File = "/jdbc.properties"; private static Properties prop; static{ init(); } private static void init () { try( InputStream resourceAsStream = PropertyUtil.class.getResourceAsStream(PATH_File); InputStreamReader inputStreamReader = new InputStreamReader(resourceAsStream, "utf-8"); ) { prop = new Properties(); prop.load(inputStreamReader); }catch (IOException e){ e.printStackTrace(); } } public static final String JDBC_DIRVER = prop.getProperty("jdbc.dirver"); public static final String JDBC_URL = prop.getProperty("jdbc.url"); public static final String JDBC_USERNAME =prop.getProperty("jdbc.username"); public static final String JDBC_PASSWORD =prop.getProperty("jdbc.password"); }
3.创建JDBC client 用于注册驱动和获取jdbc的connetion实例
package utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /** * Created by fengxinzi on 17-9-25. */ public class JdbcClient { static { try { Class.forName(PropertyUtil.JDBC_DIRVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws ClassNotFoundException, SQLException { return DriverManager.getConnection( PropertyUtil.JDBC_URL, PropertyUtil.JDBC_USERNAME, PropertyUtil.JDBC_PASSWORD); } }4.创建简单的测试例子,用获取的connection创建statement 操作数据库,并返回resultSet,通过遍历resultSet获取具体参数:
@Test public void test20() { try (Connection connection = JdbcClient.getConnection()){ String sql = "select * from name"; Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()){ int id = resultSet.getInt("id"); String name = resultSet.getString("name"); System.out.println(name+"的ID为"+id); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } }
打印结果如下
ruirui的ID为0pengpeng的ID为2
baobao的ID为3
xinxin的ID为4
zhouzhou的ID为5
Process finished with exit code 0