JDBC:Java Database Connectivity(java数据库连接),主要由接口组成。
JDBC 是一个接口,其中有一套为了简化、统一对数据库操作的,java操作数据库的规范。可以通过jdbc加载具体的驱动,从而操作数据库。
jdbc简单来说就是关联数据库和java得到纽带
搭建实验环境,建立数据库,并在其中建立数据表;
create database jdbcStudy character set utf8 collate utf8_general_ci; use jdbcStudy; create table student( id int primary key, name varchar(40), password varchar(40), email varchar(60), birthday date); insert into student (id,name,password,email,birthday) values (1,'zhansan','123456','zs@sina.com','1980-12-04'); insert into student (id,name,password,email,birthday) values (2,'lisi','123456','lisi@sina.com','1981-12-04'); insert into student (id,name,password,email,birthday) values (3,'wangwu','123456','wangwu@sina.com','1979-12-04')新建java工程,并导入数据库;
新建一个database.properties配置文件存放数据库相关信息;
jdbc:mysql://localhost:3306/school 协议:子协议://主机:端口/数据库 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/school user=root password=123456编写程序从数据表中,读取数据;(友情提示一定要导包!!!!!)
import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class asd { private static String driver=null; private static String url=null; private static String user=null; private static String password=null; public static void main(String[] args) throws SQLException { inp(); } private static void inp() throws SQLException { try { InputStream ras = asd.class.getClassLoader().getResourceAsStream("ghjkl.properties"); Properties pro = new Properties(); pro.load(ras); driver=pro.getProperty("driver"); url=pro.getProperty("url"); user= pro.getProperty("user"); password= pro.getProperty("password"); Class.forName(driver); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection con = DriverManager.getConnection(url, user, password); Statement sta = con.createStatement(); ResultSet res = sta.executeQuery( "select id,name,email,birthday from student"); while (res.next()){ System.out.println(res.getObject("id")); System.out.println(res.getObject("name")); System.out.println(res.getObject("email")); System.out.println(res.getObject("birthday")); } res.close(); sta.close(); con.close(); } }DriverManager在jdbc中用于加载驱动,并创与数据库的链接;
使用方法:
DriverManager.registerDriver(new Driver())
DriverManager.getConnection(url, user, password)
由于采用registerDriver加载驱动会出现很多问题,所以实际我们并不推荐使用此方法加载驱动,而是使用Properties pro = new Properties();driver=pro.getProperty(“driver”);Class.forName(driver);(采用此种方式不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要依赖具体的驱动,使程序的灵活性更高)。
Jdbc程序中的ResultSet用于代表Sql语句的执行结果;
Resultset封装执行结果时,采用的类似于表格的方式。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。
ResultSet既然用于封装执行结果的,所以该对象提供的都是用于获取数据的get方法:
获取任意类型的数据
getObject(int index)
getObject(string columnName)
获取指定类型的数据,例如:
getString(int index)
getString(String columnName)
ResultSet还提供了对结果集进行滚动的方法:
next():移动到下一行;Previous():移动到前一行;absolute(int row):移动到指定行;beforeFirst():移动resultSet的最前面;afterLast() :移动到resultSet的最后面。