JDBC
JDBC
本质是一套操作数据库的接口,各个数据库根据自身的实现原理去实现JDBC,数据库对JDBC接口的实现称为该数据库的驱动,因此我们在使用数据库前需要导入该数据库的驱动jar包
程序员面向JDBC接口就可以操作各种类型的数据库,降低程序员的学习成本
JDBC编程六步:
-
注册驱动(告知java连接的是哪个数据库)
-
第一种方式
Driver driver=new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);
Driver为java.sql.Driver的接口,各个数据库对这个接口的实现类也叫Driver
我们new数据库驱动的Driver(com.mysql.cj.jdbc.Driver)赋给java.sql.Driver(多态),要注意不要搞混了
-
第二种方式
Class.forName("com.mysql.cj.jdbc.Driver");
通过反射机制forName方法直接加载Driver类,不需要接收其返回值,因为我们只需要它的类加载动作
因为实现类Driver在其静态代码块中写入了上述第一种注册驱动的代码,类加载,静态代码块被执行,驱动注册也随之完成。
-
-
获取连接(JVM进程与数据库进程的通道打开)
String url="jdbc:mysql://127.0.0.1:3306"/数据库名
String user="root"
String password="000000"
Connection conn=DriverManager.getConnection(url,user,password);
-
获取数据库操作对象(有数据库操作对象才能操作数据库)
Statement stmt=conn.createStatement();
-
执行sql语句
String sql="select * from table1";
ResultSet rst=stmt.executeQuery(sql)
查询语句使用executeQuery(String sql)执行sql语句,其返回值类型为ResultSet
DDL语句(create、alter、drop)和DML语句(insert、update、delete)需要使用executeUpdate(String sql)执行sql语句,其返回值为整数,表示被影响的行数。
ResultSet为结果集,查询的数据库表的信息都存储在结果集中,用完也需要关闭
-
处理查询结果集(当执行的是select语句时)
while(rst.next()){ out.print(rst.getString(1)+"\t"); }
next()方法为ResultSet结果集中的方法,执行一次该方法光标向下移动一行,若该行有数据则返回true,没有数据就返回false,默认光标初始指向第一行有数据的前一行。
getString()方法为ResultSet结果集中的方法,其作用为无论取出数据库中数据是何种类型都以字符串类型取出。参数为index,或查询语句中的列名(推荐这种方式,比较健壮),表示第几列数据
取数据除了可以用getString()取出,也可以用相应的类型方法取出,例如getInt,getDouble...
JDBC中下标从1开始,不从0开始
-
释放资源(进程间的通信,用完要关闭)
为了确保一定关闭,将关闭操作放入finally语句块中
将conn,stmtrst,rst关闭,并分开处理异常