概述
文章目录
- JDBC概念
- JDBC使用
- JNDI概念
- JNDI使用
- 总结
JDBC概念
1.Java Database Connectivity (JDBC)是一个标准的Java API,它由一组类和接口组成,Java应用程序开发人员使用它来访问数据库和执行SQL语句。
2.JDBC(Java Database Connectivity)是由数据库中间服务商提供的,用于连接数据库的Java API。一组类和接口(对接数据库)。
通俗的讲就是JDBC用来连接数据库和执行SQL语句,但是它最大的特点是通过java程序去找数据库驱动,然后来连接数据库。是java亲自去连数据库。
JDBC使用
// 第一步: 首先注册驱动, 驱动一般只会注册一次
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 第二步:建立连接 Connect, 设置url ,用户名, 密码
// url格式:JDBC:子协议:子名称//主机名:端口/数据库名?属性名=属性值&…
// 注意的是url中一定不要加多余的空格,否则会出错, useSSL=false是为了解决身份验证时出现的警告的问题
// String url = "jdbc:mysql://localhost:3306/test?" + "user=root&password=wsw011152&useUnicode=true&characterEncoding=UTF-8&useSSL=false";
String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
String name = "root";
String psw = "******";
Connection connect = null;
try {
connect = DriverManager.getConnection(url, name, psw);
// connect = DriverManager.getConnection(url);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 第三步: 创建一个 Statement ,一般建议使用 PreparedStatement
// 1、执行静态SQL语句。通常通过Statement实例实现。
// 2、执行动态SQL语句。通常通过PreparedStatement实例实现。
// 3、执行数据库存储过程。通常通过CallableStatement实例实现。
// String sql = "select * from user where id = ?";
String sql = "select * from user where id = ?";
try {
PreparedStatement ps = connect.prepareStatement(sql);
ps.setInt(1, 1); // 设置参数
// 第四步: 执行语句,获得一个结果集,处理获得的结果
ResultSet result = ps.executeQuery();
while (result.next()){ System.out.println(result.getInt("id"));
System.out.println(result.getString("name"));
System.out.println(result.getInt("age"));
System.out.println(result.getString("salary"));
}
// 第五步: 关闭资源
result.close();
ps.close();
connect.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
JNDI概念
1.JNDI(Java Name Directory Interface,Java命名和目录接口),它不仅仅是进行数据库定位的,它是给当前应用服务器所管理的所有资源一个唯一的标识,包括数据库,网页,文件,连接池等等。
JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个记录,同时返回数据库连接建立所必须的信息。
JNDI主要有两部分组成:应用程序编程接口和服务供应商接口。应用程序编程接口提供了Java应用程序访问各种命名和目录服务的功能,服务供应商接口提供了任意一种服务的供应商使用的功能。
2.JNDI(Java Name Directory Interface)是为应用服务器(Tomcat)管理资源所设置的目录样式的唯一标识。(数据库、网页、文档等)
通俗的讲,JNDI不单单是用来连接数据库的,它是通过命名服务来找到数据库并返回数据库连接,当然JNDI还可以管理当前应用服务器上的其他资源,如网页,文件等,它用来连接数据库时和JDBC最大的区别就是它是通过应用服务器配置(如Tomcat)的配置文件context.xml来找数据库驱动的,其次就是JDBC连接能承受的同时请求数太低了,JNDI连接池连接与之相比会好很多。
JNDI使用
1.添加jar包
2.在Tomcat/conf/context.xml中配置
<Resource
name="jdbc/test"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="root"
password="*****"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test"
/>
3.在项目web.xml文件中添加配置
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4.在代码中连接、使用
DataSource ds = null;
try {
Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:comp/env/jdbc/test");
out.print(ds);
} catch (Exception e) {
e.printStackTrace();
}
connect = ds.getConnection();
....
总结
1.JNDI通过在Tomcat服务器的配置文件和项目的web.xml上配置参数,可以灵活、快速地获取数据库配置信息并连接。对比JDBC,当数据库参数、路径等改变时也不需要改变代码,比较灵活简单。
2.请求资源的主动性不一样。JDBC是通过java程序主动去连接数据库获得连接,而JNDI是通过请求命名服务器返回数据库连接。
3.功能范围不一样。JDBC只能用来做一件事那就是连接数据库,而命名JNDI除了能和JDBC做同样的事以外还能管理当前应用服务器上的其他资源,如网页,文件等
4.请求连接数不通。JNDI连接池数高于JDBC
参考文章:
https://blog.csdn.net/ibigboy/article/details/84309064
https://www.cnblogs.com/boluofan/p/10850980.html
最后
以上就是激情乐曲为你收集整理的一文搞懂JDBC和JNDI的全部内容,希望文章能够帮你解决一文搞懂JDBC和JNDI所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复