知识点:
1.使用JDBC技术连接Oracle数据库;
2.观察JDBC种常用类与接口的使用结构;
具体内容:
Java中,所有的数据库操作的类和接口都保存在了java。sql包里面,在这个包里面核心的组成如下:
- 一个类:DriverManager类;
- 四个接口:Connection、Statement、ResultSet、PreparedStatement。
所有的JDBC连接数据库的操作流程都是固定的,按照如下的几步完成:
1.加载数据库驱动程序(向容器加载);
2.进行数据库连接(通过DriverManager类完成,Connection表示连接);
3.进行数据的CRUD(Statement、PreparedStatement、ResultSet);
4.关闭数据库操作以及链接(直接关闭连接就够了);
一、所有的JDBC实际上都是由各个不同的数据库生产商提供的数据库驱动程序,这些驱动程序逗是以*.jar文件给出来的,所以如果要使用那么就需要为其配置CLASSPATH,而后要设置驱动程序的类名称(包.类);
1.驱动程序:
Oracle驱动程序类:oracle.jdbc,driver..OracleDriver。
加载类试用:Class.forName("oracle.jdbc,driver..OracleDriver")
二.连接数据库:
如果想链接数据库需要提供如下几个信息(前提:数据库服务打开):
数据库的链接地址:jdbc:oracle:链接方式:主机名称:端口名称:数据库的SID
要连接本机的mldn数据库:jdbc:oracle:thin:@localhost:1521:mldn
数据库的用户名:scott;
数据库的密码:tiger;
要链接数据库必须依靠DriverManager类万成,在此类定义有如下的方法:
连接数据库:public static Connection getConnection(String url, String user, String password) throws SQLException
在JDBC里面,每一个数据库连接都要求使用一个Connection对象进行封装,所以只要有一个新的Connection对象就表示要连接一 次数据库。
四.关闭数据库:
Connection接口提供有close()方法:void close() throws SQLException
范例:连接数据库
package conll;
import java.sql.Connection;
import java.sql.DriverManager;
public class TestDemo {
private static final String DBDEIVER="oracle.jdbc.driver.OracleDriver";
private static final String DBURL="jdbc:oracle:thin:@localhost:1521:mldn";
private static final String USER="scoot";
private static final String PASSWORD="tiger";
public static void main(String[] args) throws Exception {
//第一步:加载数据库驱动程序,此时不需要实例化,因为由容器自己负责管理
Class.forName(DBDEIVER) ;
//第二步:连接数据库
Connection conn = DriverManager.getConnection(DBURL, USER, PASSWORD);
System.out.println(conn);
//第四步:关闭数据库
conn.close();
}
}
如果System.out.println(conn)有输出表示连接上了数据库,可是很多时候是连接不上数据库的。原因:
1.监听服务出现错误:
- 监听的主机不是本机的死算计名称,也不要使用IP地址,因为如果是动态的IP会变的。
- 监听配置文件路径:安装文件\NETWORK\ADMIN,这里面有两个文件:
——监听文件:listener.ora;
——监听的命名文件:tnsnames;
2.不能够找到指定的SID
数据库的名字就是SID的名字,但是很多的时候会发现该名称不会自动注册,也就是说有一个数据库名称,没有对应的SID名称。于是可以打开数据库的网络管理工具
结构总结:通过以上的操作发现,整个数据库进行连接操作的时候都是按照同样的步骤进行:
DriverManger类取得Connection接口对象
原来JDBC操作之中,在驱动数据库李娜饥饿对象时,采用的是工厂设计模式,而DriverManager就是一个工厂类,那么客户端调用的时候会完全隐藏具体的实现子类。
总结:
1.以后不管连接何种关系型数据库,都一定通过DriverManager进行数据库连接;
2.每一个Connection接口对象就表示一个数据库连接,程序最后必须关闭数据库连接。