1、注册驱动:驱动就是类,实现jdbc接口的那些类。告诉jdbc程序我这边有驱动。
2、建立连接:通过驱动跟数据库建立连接后。通过协议连接。挨个问那些驱动列表里的驱动能不能根据url建立连接。
3、创建语句:把sql语句运过去,也能把需要的信息运回来。
4、执行语句:驱动会把这些数据包装,包装成一个二维表的形式。
5、处理结果:按行循环取出结果。
6、释放资源:连接要有尽量晚建立,尽量早释放的原则。减轻数据库的负担。
注册驱动:
其实里面有个列表可以加很多注册进来的驱动,mysql、等。
方法一:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
方法二:
System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver:冒号后加其他驱动");
方法三:
Class.forName("com.mysql.jdbc.Driver");
第三个方法作用是:通过这个类名把这个类加载到虚拟机上,还没有构造实例(之前只会说是获得类的对象)。
那这个是怎么放进驱动的列表里呢(要注册到DriverManager才能用的哦)?:当一个类被加载到虚拟机后,首先执行static代码块。而com.mysql.jdbc.Driver的静态代码块就有方法一的语句了--java.sql.DriverManager.registerDriver(new Driver())把自己注册进驱动列表里了。
所以第三种方法更好,第一种方法其参数new Driver的时候就包含了方法三,又注册进驱动列表,一共注册了2次同样的驱动。
另外,方法一依赖mysql的类引用,其参数new的com.mysql.jdbc.Driver是mysql的一个类,需要import java.sql.Connection,引入这个类。离开mysql驱动就不能编译了。也就是需要mysql-connector-java-架包的存在才能通过编译。
方法二、三即使没有这个架包没有驱动也能通过编译。
一、建立连接:挨个问那些驱动列表里的驱动能不能根据url建立连接。
1 String url = "jdbc:mysql://localhost:3306/jdbc"; 2 String user = "root"; 3 String password = ""; 4 Connection conn = DriverManager.gerConnection(url,user,password);
url格式:
JDBC:子协议:子名称//主机名:端口/数据库名?属性名 = 属性值&……
默认本机,使用mysql的默认端口号3306,可以这样:
String url = "jdbc:mysql:///jdbc";
二、创建语句
把sql语句运过去,也能把需要的信息运回来。
Statement st = conn.createStatement();
三、执行语句
驱动会把这些数据包装,包装成一个二维表的形式。
ResultSet rs = st.executeQuery("select * from user");
四、处理结果
按行循环取出结果。
while(rs.next()) { System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t" + rs.getObject(3) + "\t"); }
五、释放资源
rs.close();
st.close();
conn.close();
后创建的要先关闭。
数据库建立连接的能力是有限的,比如mysql两百个吧,机器好的就多点。所以用完就要关掉。数据库漏关的话系统很快就会死掉,特别是那些大型网站要注意。
如果close抛异常的话,那数据库还是没关。后面再讲严谨的。
连接要有尽量晚建立,尽量早释放的原则。减轻数据库的负担。