Java使用JNDI连接数据库的实现方法

目录
  • 项目背景
  • 环境
  • 概念
    • 数据源与连接池
    • 什么是JNDI
    • JNDI优点
  • JDNI在Tomcat中的配置
    • Jar包
    • 测试准备
    • JNDI配置
    • 全局引用
    • 局部引用
  • 参考资料

项目背景

在项目中本身使用的SQL Server 数据库,某些功能下需要访问Sybase数据库(都淘汰的东西 QAQ),考虑到功能较少并且我们的UAT和PROD环境使用的是WebSphere,其本身已经存在JNDI的连接方式,因此我决定使用JNDI设置,那么就需要解决JNDI在Tomcat下的配置了,找了很多资料,说到这,不得不吐槽我们国内的博客论坛,大部分都是抄,关键是还抄不全,错漏百出,还不注明原作者。

环境

Eclipse:Luna
Tomcat:apache-tomcat-9.0.8

概念

数据源与连接池

数据源名称(data source name,DSN)是包含了有关某个特定数据库信息的数据结构,这个信息是开放式数据库连接驱动能够连接到数据库上必需的信息,其实本质上就使程序与数据库连接的通道。数据源中并无真正的数据,它仅仅记录的是你连接到哪个数据库,以及如何连接的,如odbc数据源。也就是说数据源仅仅是数据库的连接名称,一个数据库可以有多个数据源连接。

在Java语言中,DataSource对象就是一个代表数据源实体的对象。一个数据源就是一个用来存储数据的工具,它可以是复杂的大型企业级数据库,也可以是简单得只有行和列的文件。数据源可以位于在服务器端,也可以位于客服端。

连接池:在Java程序中,当我们需要对数据库进行操作时,对于数据库的增删改查等操作的前提是需要与数据库建立连接,而对于连接的管理其实就使建立在数据源的基础上,即连接池。
常用的数据库连接池:

序号 连接池名称 依赖的jar包 实现的datasource类 备注
1 JNDI 该数据源是由相应的web服务器(例如:tomcat,weblogic,websphere)负责初始化,创建,管理。程序中不需要引入特别的jar包。 Javax.sql.datasource
2 C3P0 c3p0-0.9.xxx.jar com.mchange.v2.c3p0.ComboPooledDataSource
3 DBCP commons-dbcp.jar
commons-pool.jar
org.apache.commons.dbcp.BasicDataSource
4 BoneCP bonecp-0.6.5.jar
google-collections-1.0.jar
slf4j-api-1.5.11.jar,slf4j-log4j12-1.5.11.jar
log4j-1.2.15.jar
BoneCPDataSource

什么是JNDI

jndi全称是java naming and directory interface。简单点就是你按命名规则给一个东西命名然后你就可以通过该名字在特定环境下直接查找到该东西了。
JNDI是用于向Java程序提供目录和命名功能的API。可以简单地把JNDI理解为一种将对象和名字绑定的技术,对象工厂负责生产出对象,这些对象都和惟一的名字绑定。外部程序可以通过名字来获取对某个对象的引用。在一个文件系统中,文件名被绑定给文件。在DNS中,一个IP地址绑定一个URL。在目录服务中,一个对象名被绑定给一个对象实体。

在Intranets(企业内部网)和Internates(互联网)中目录服务(Directory service)都非常重要,它规范了命名规则,让人们容易理解实体及之间的关系。JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。JNDI目前所支持的技术包括LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。

jndi被设计成独立于特定的目录服务,所以各种各样的目录都可以通过相同的方式进行访问。这样使用jndi的java程序员不仅可以获得统一规整的命名和目录,而且可以通过多层的命名方案无缝访问(seamless acess)目录对象。

JNDI优点

JNDI是由web服务器,实现了java.sql.datasource。由web服务器负责初始化数据源,创建connection,分配,管理connection。由于本身是由web服务器实现的功能,因此不需要在项目project中引入特别的jar包,但是需要在服务器的某些配置文件中增加相关的配置。对于我们这种连接多个数据库有很好的效果。

JDNI在Tomcat中的配置

Jar包

1.数据库的驱动程序包:
jconn4.jar Sybase驱动程序包
mssql-jdbc-6.1.0.jre7.jar SQL Server 程序驱动包
2.JSP标签Ja包
.jstl-1.2.jar
standard-1.1.2.jar

测试准备

新建测试Web项目如下:

JSP:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>

<!DOCTYPE HTML>
<html>
  <head>
    <title>JNDI数据源测试</title>
  </head>

  <body>
        <%
            Connection connOracle = null;
            try {
                //1、初始化名称查找上下文
                Context ctx = new InitialContext();
                //InitialContext ctx = new InitialContext();亦可
                //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名
                /*
                DataSource名在web.xml文件中的<res-ref-name>oracleDataSource</res-ref-name>进行了配置
                 <!--Oracle数据库JNDI数据源引用 -->
                 <resource-ref>
                      <description>Oracle DB Connection</description>
                      <res-ref-name>oracleDataSource</res-ref-name>
                      <res-type>javax.sql.DataSource</res-type>
                      <res-auth>Container</res-auth>
                 </resource-ref>
                */
                DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/Sybase_claims");
                //3、通过DataSource取得一个连接
                connOracle = ds.getConnection();
                out.println("Sybase Connection pool connected !!");
                //4、操作数据库
            } catch (NamingException e) {
                System.out.println(e.getMessage());
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                //5、关闭数据库,关闭的时候是将连接放回到连接池之中
                connOracle.close();
            }
        %>
        <hr/>
        <%
            Connection connSQLServer = null;
            try {
                //1、初始化名称查找上下文
                Context ctx = new InitialContext();
                //InitialContext ctx = new InitialContext();亦可
                //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面的是DataSource名
                /*
                DataSource名在web.xml文件中的<res-ref-name>sqlserverDataSource</res-ref-name>进行了配置
                <!--SQLServer数据库JNDI数据源引用 -->
                  <resource-ref>
                      <description>SQLServer DB Connection</description>
                      <res-ref-name>sqlserverDataSource</res-ref-name>
                      <res-type>javax.sql.DataSource</res-type>
                      <res-auth>Container</res-auth>
                  </resource-ref>
                */
                DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/sqlserver");
                //3、通过DataSource取得一个连接
                connSQLServer = ds.getConnection();
                out.println("SQLServer Connection pool connected !!");
                //4、操作数据库
            } catch (NamingException e) {
                System.out.println(e.getMessage());
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                //5、关闭数据库,关闭的时候是将连接放回到连接池之中
                connSQLServer.close();
            }
        %>
    </body>
</html>

Tomcat:

将数据库驱动Jar包放入Tomcat的lib文件夹下:

JNDI配置

在Tomcat 配置文件server.xml(apache-tomcat-9.0.8\conf)中的GlobalNamingResources标签内定义

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
<!--
  |- name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,
           为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。
  |- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
  |- type:此名称所代表的类型,现在为javax.sql.DataSource
  |- maxActive:表示一个数据库在此服务器上所能打开的最大连接数
  |- maxIdle:表示一个数据库在此服务器上维持的最小连接数
  |- maxWait:最大等待时间。10000毫秒
  |- username:数据库连接的用户名
  |- password:数据库连接的密码
  |- driverClassName:数据库连接的驱动程序
  |- url:数据库连接的地址
-->
<!--配置Sysbase数据库的JNDI数据源-->
<Resource
        name="jdbc/Sybase_claims"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="test"
        password="test"
        driverClassName="com.sybase.jdbc4.jdbc.SybDriver"
        url="jdbc:sybase:Tds:127.0.0.1:4101?ServiceName=db_claims"/>

<!--配置SQL Server数据库的JNDI数据源-->
<Resource
        name="jdbc/sqlserver"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="sa"
        password="p@ssw0rd"
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
        url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=sonora"/>

全局引用

在Tomcat 的context.xml(apache-tomcat-9.0.8\conf)中引用,针对于本Tomcat服务器下所有项目使用。

<Context>
    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
	<ResourceLink name="jdbc/Sybase_claims" global="jdbc/Sybase_claims" type="javax.sql.DataSource"/>
	<ResourceLink name="jdbc/Sybase_iws_ref" global="jdbc/Sybase_iws_ref" type="javax.sql.DataSource"/>
</Context>

当然,我们也可以不引用局部配置的,在Context标签中直接写数据源:

<Context>
    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
	<!--配置Sysbase数据库的JNDI数据源-->
<Resource
        name="jdbc/Sybase_claims"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="test"
        password="test"
        driverClassName="com.sybase.jdbc4.jdbc.SybDriver"
        url="jdbc:sybase:Tds:127.0.0.1:4101?ServiceName=db_claims"/>

	<!--配置SQL Server数据库的JNDI数据源-->
<Resource
        name="jdbc/sqlserver"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="sa"
        password="p@ssw0rd"
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
        url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=sonora"/>
</Context>

局部引用

局部引用:即是配置的数据源,只针对于指定项目使用。
方式一:在server.xml中的host标签内配置

  <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
		<Context docBase="jndi_demo" path="/jndi_demo" reloadable="false">
			<ResourceLink name="jdbc/Sybase_claims" global="jdbc/Sybase_claims" type="javax.sql.DataSource"/>
			<ResourceLink name="jdbc/sqlserver" global="jdbc/sqlserver" type="javax.sql.DataSource"/>
		</Context>
      </Host>

当然也也可以直接在Context标签下直接定义

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
		<Context docBase="jndi_demo" path="/jndi_demo" reloadable="false">
			<Resource
        name="jdbc/Sybase_claims"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="test"
        password="test"
        driverClassName="com.sybase.jdbc4.jdbc.SybDriver"
        url="jdbc:sybase:Tds:127.0.0.1:4101?ServiceName=db_claims"/>

	<!--配置SQL Server数据库的JNDI数据源-->
<Resource
        name="jdbc/sqlserver"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="sa"
        password="p@ssw0rd"
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
        url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=sonora"/>
		</Context>
      </Host>

方式二:在Tomcat安装目录下apache-tomcat-9.0.8\conf\Catalina\localhost下新建xml文件,文件名与项目名称相同。

<!--映射JNDITest项目的虚拟目录-->
<Context docBase="D:/soft-install/apache-tomcat-9.0.8/webapps/jndi_demo/WebContent" debug="0" reloadable="false">
     <!--引用Sybase数据库的JNDI数据源-->
    <ResourceLink name="jdbc/Sybase_claims" global="jdbc/Sybase_claims" type="javax.sql.DataSource"/>
    <!--引用sqlserver数据库的JNDI数据源-->
    <ResourceLink name="jdbc/sqlserver" global="jdbc/sqlserver" type="javax.sql.DataSource"/>
</Context>

方式三:
在Tomcat下项目目录的META-INF中新建Context.xml 配置JNDI引用,例如:、apache-tomcat-9.0.8\webapps\jndi_demo\META-INF、。

<Context reloadable="false">
			<ResourceLink name="jdbc/Sybase_claims" global="jdbc/Sybase_claims" type="javax.sql.DataSource"/>
			<ResourceLink name="jdbc/sqlserver" global="jdbc/Sybase_iws_ref" type="javax.sql.DataSource"/>
</Context>

<?xml version="1.0" encoding="UTF-8"?>
<Context   path="" reloadable="false">
			<Resource
        name="jdbc/Sybase_claims"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="test"
        password="test"
        driverClassName="com.sybase.jdbc4.jdbc.SybDriver"
        url="jdbc:sybase:Tds:127.0.0.1:4101?ServiceName=db_claims"/>

	<!--配置SQL Server数据库的JNDI数据源-->
<Resource
        name="jdbc/sqlserver"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="sa"
        password="p@ssw0rd"
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
        url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=sonora"/>
</Context>

这样做的好处就是可以脱离Tomcat配置的更改。

注意

1.看了很多文章,有些是在项目web.xml中配置如下内容,经过的验证Tomcat中是可有可无的,不过有些文章说最好加上,以便于项目移植,因为有些服务器是需要的。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!--
  JNDI配置的资源引用:
  • res-ref-name:表示引用资源的名称
  • res-type:此资源对应的类型为javax.sql.DataSource
  • res-auth:容器授权管理
   -->
   <!--Sybase数据库JNDI数据源引用 -->
  <resource-ref>
      <description>Sybase DB Connection</description>
      <res-ref-name>jdbc/Sybase_claims</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
 </resource-ref>

  <!--SQLServer数据库JNDI数据源引用 -->
  <resource-ref>
      <description>SQLServer DB Connection</description>
      <res-ref-name>jdbc/sqlserver</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

</web-app>

JNDI配置我们可以发现,第三种方式完全脱离Tomcat的配置,对于server的影响较小。不过我比较推荐全局配置,各处引用,方便切换。

Tomcat的配置修改后,最好重启Tomcat以便生效,对于server.xml修改必须重启生效,而context.xml配置保存后tomcat会自动加载无需重启

JNDI数据源获取写法有一下两种,前者是针对于Tomcat中的,而后者是针对于IBM WebSphere。

A: java:comp/env/jdbc/Sybase_claims
B: jdbc/Sybase_claims

针对于A:
java:comp/env 是环境命名上下文(environment naming context(ENC)),是在EJB规范1.1以后引入的,引入这个是为了解决原来JNDI查找所引起的冲突问题,也是为了提高EJB或者J2EE应用的移植性。
在J2EE中的引用常用的有:
JDBC 数据源引用在java:comp/env/jdbc 子上下文中声明
JMS 连接工厂在java:comp/env/jms 子上下文中声明
JavaMail 连接工厂在java:comp/env/mail 子上下文中声明
URL 连接工厂在 java:comp/env/url子上下文中声明

参考资料

https://www.cnblogs.com/wuyanshun/p/6763162.html
http://tomcat.apache.org/tomcat-9.0-doc/jndi-resources-howto.html

到此这篇关于Java使用JNDI连接数据库的实现方法的文章就介绍到这了,更多相关Java JNDI连接数据库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JNDI简介_动力节点Java学院整理

    一.JNDI是什么? JNDI--Java 命名和目录接口(Java Naming and Directory Interface),是一组在Java应用中访问命名和目录服务的API. 二.JNDI好处 解耦:通过注册.查找JNDI服务,可以直接使用服务,而无需关心服务提供者,这样程序不至于与访问的资源耦合! JNDI优点  包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务: 可以同时连接到多个命名或目录服务上: 建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必知道对象

  • JNDI在JavaEE中的角色_动力节点Java学院整理

    虽然 J2EE 平台提高了普通企业开发人员的生活水平,但是这种提高是以不得不学习许多规范和技术为代价的,这些规范和技术则是 J2EE 为了成为无所不包的分布式计算平台而整合进来的.Dolly Developer 是众多开发人员中的一员,她已经发现了一个特性,该特性有助于缓解随企业级应用程序部署而带来的负担,这个特性就是 JNDI,即 Java 命名与目录接口(Java Naming and Directory Interface).让我们来看看 Dolly 在没有 JNDI 的时候是怎么做的,以

  • Java中的命名与目录接口JNDI基本操作方法概览

    对jndi总体的理解: jndi(java naming and directory Interface)它提供了一套使用命名和目录服务的接口.用户可以通过它来使用命名和目录服务.就像jdbc一样.jndi包括命名服务和目录服务两部分,其中目录服务包含目录对象directory object,它包含若干属性对象.提供了对属性的很多操作. 命名和目录服务: 命名和目录服务我们一直在使用,如操作系统的文件系统,它给我们提供对文件的操作,查询,添加删除等功能.DNS服务将url同ip地址绑定在了一起.

  • Java JNDI案例详解

    JNDI的理解 JNDI是 Java 命名与文件夹接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之中的一个,不少专家觉得,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识.  那么,JNDI究竟起什么作用?//带着问题看文章是最有效的  要了解JNDI的作用,我们能够从"假设不用JNDI我们如何做?用了JNDI后我们又将如何做?"这个问题来探讨.  没有JNDI的做法:  程序猿开发时,知道要开发訪

  • Java之JNDI注入的实现

    目录 About JNDI 0x01 简介 0x02 JNDI的用途 0x03 日常使用 0x04 JNDI命名和目录服务 前置知识 InitialContext类 Reference类 JNDI Demo JNDI+RMI攻击手法 JNDI+LDAP攻击手法 Reference About JNDI 0x01 简介 JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提

  • Java使用JNDI连接数据库的实现方法

    目录 项目背景 环境 概念 数据源与连接池 什么是JNDI JNDI优点 JDNI在Tomcat中的配置 Jar包 测试准备 JNDI配置 全局引用 局部引用 参考资料 项目背景 在项目中本身使用的SQL Server 数据库,某些功能下需要访问Sybase数据库(都淘汰的东西 QAQ),考虑到功能较少并且我们的UAT和PROD环境使用的是WebSphere,其本身已经存在JNDI的连接方式,因此我决定使用JNDI设置,那么就需要解决JNDI在Tomcat下的配置了,找了很多资料,说到这,不得不

  • Java使用JDBC连接数据库的实现方法

    本文实例讲述了Java使用JDBC连接数据库的实现方法,是Java数据库程序设计里非常实用的重要技巧.分享给大家供大家参考.具体如下: JDBC(Java Data Base Connectivity)数据库连接,通常我们在编写web应用或java应用程序要连接数据库时就要使用JDBC.使用JDBC连接数据库一般步骤有: 1.加载驱动程序 Class.forName(driver); 2.创建连接对象 Connection con = DriverManager.getConnection(ur

  • java实现的连接数据库及模糊查询功能示例

    本文实例讲述了java实现的连接数据库及模糊查询功能.分享给大家供大家参考,具体如下: 模糊查询是比较常见的一种查询方式,例如在订单表中,包含有订单的具体日期.如果要查询某年某月的订单信息,最好的方式就是使用模糊查询.进行模糊查询需要使用关键字LIKE.在使用LIKE关键字进行模糊查询时,可以使用通配符"%",来代替0个或者多个字符,使用下划线_来代表一个字符. 注释:需要注意的是在使用LIKE的时候,后面的查询条件需要加 '  ',英文状态下的单引号引起来,不然报错如下 You ha

  • java 中JDBC连接数据库代码和步骤详解及实例代码

    java 中JDBC连接数据库代码和步骤详解 JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤:  1.加载JDBC驱动程序:  在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String  className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(Class

  • Java基于JDBC连接数据库及显示数据操作示例

    本文实例讲述了Java基于JDBC连接数据库及显示数据操作.分享给大家供大家参考,具体如下: 1. 导入jdbc包 java要连接MySQL数据库需要用到JDBC工具(mysql-connector-java-5.1.39-bin.jar),这是一个jar包,不同的数据库对应不同的jar包,这里用的是MySQL数据库jar包,导入很简单,鼠标对项目右击 - Build Path - Configure Build Path - 右侧选Libraries - Add External JARs,选

  • java使用JDBC连接数据库的五种方式(IDEA版)

    JDBC是java访问数据库的基础,其余的mybatis和JDO 以及Hibernate 都是把jdbc封装起来,因此了解JDBC连接数据库的原理十分重要!! 准备工作 1. mysql的jar包 导入到lib目录下 2.把导入的jar包添加到项目中 点击jar包   选择 3.创建一个TestConnection类 五种方式如下: /** * @author * @date 2019 **/ import org.junit.Test; import java.io.InputStream;

  • Java基于JNDI 实现读写分离的示例代码

    目录 一.JNDI数据源配置 二.JNDI数据源使用 三.web.xml配置 四.spring-servlet.xml配置 五.spring-db.xml配置 六.log4j.properties配置 七.相关路由数据源切换逻辑代码 八.搭建过程中遇到的问题和解决方案 一.JNDI数据源配置 在Tomcat的conf目录下,context.xml在其中标签中添加如下JNDI配置: <Resource name="dataSourceMaster" factory="or

  • Java使用JDBC连接数据库

    目录 一.JDBC简介 二.JDBC中常用类和接口 1.驱动程序管理类(DriverManager) 2.声明类(Statement) 3.数据库连接类 (Connection) 4.结果集合类 (ResultSet) 5.JDBC编程步骤 三.常用操作(对于记录来说) 1.获取数据库连接 2.增加表中记录 3.删除数据库表格记录 4.更新数据库中表格记录信息 5.查询 (1)单个变量的查询 (2)多个变量查询 6.调用存储过程 (1)调用无参存储过程 (2)调用含有IN参数的存储过程 (3)调

  • Java详细分析连接数据库的流程

    目录 注册驱动程序 创建连接 创建 SQL 语句 执行 SQL 语句 关闭连接 以下 5 个步骤是使用 JDBC 将 Java 应用程序与数据库连接所涉及的基本步骤. 注册驱动程序 创建连接 创建 SQL 语句 执行 SQL 语句 关闭连接 注册驱动程序 它首先是创建 JDBC 连接的重要部分.JDBC API 提供了一种Class.forName()用于显式加载驱动程序类的方法.例如,如果我们要加载 jdbc-odbc 驱动程序,那么我们将其称为如下. 使用 JDBC-ODBC 驱动程序注册的

随机推荐