有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用java远程连接oracle数据库

我正试图找出如何远程连接到oracle数据库,以便从中获取信息/数据。我不知道该怎么做。我还想使用datasource连接oracle数据库。我对这一点完全陌生,如果不太需要问的话,我可以一步一步地了解如何做到这一点。我正在使用liberty服务器

我所做的就是在互联网上读一些能回答我问题的东西,但我似乎找不到我要找的东西。下面是我所拥有的,我正试图从我所拥有的中看到如何实现我的目标

在这个场景中,我想使用datasource并远程连接到oracle DB

package com.dBconnect;

import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DatabaseUtility {

    private static DataSource dataSource;
    static Connection conn;

    public static void main(String ars[]) {
        try {
            conn = dataSource.getConnection();
            System.out.println("connection established");

        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

共 (1) 个答案

  1. # 1 楼答案

    您的示例代码是一个独立的Java程序,尽管您也用websphere liberty标记了这个问题。从独立Java程序和在应用服务器(后者)中运行时获取数据源的方法不同

    以下是如何在自由中实现它

    编辑服务器配置(server.xml)文件以启用jdbc功能之一

    <featureManager>
      <feature>jdbc-4.2</feature>
      <feature>jndi-1.0</feature> <!  for JNDI lookup of the data source  >
      <feature>servlet-4.0</feature> <!  or other features that you want to use  >
    </featureManager>
    
    <dataSource id="myDataSource" jndiName="jdbc/myOracleDataSource">
        <jdbcDriver libraryRef="OracleLib"/>
        <properties.oracle URL="jdbc:oracle:thin:@//localhost:1521/SAMPLEDB" user="user1" password="password1"/>
    </dataSource>
    
    <library id="OracleLib">
        <file name="C:/Oracle/lib/ojdbc8.jar"/>
    </library>
    

    有关数据源配置的更多信息,请参阅this knowledge center page上的示例配置

    从web或ejb组件(此处使用servlet)中,按如下方式使用资源注入(这不需要jndi-1.0特性)

    @WebServlet("/*")
    public class ExampleServlet extends javax.servlet.http.HttpServlet {
        @Resource(lookup = "jdbc/myOracleDataSource")
        private DataSource dataSource;
    
        public void init() throws ServletException {
            // Here is another way of accessing the data source - via JNDI lookup.
            // This requires the jndi-1.0 feature
            DataSource anotherDataSource = InitialContext.doLookup("jdbc/myOracleDataSource");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            try {
                conn = dataSource.getConnection();
                System.out.println("connection established");
                response.getWriter().println("connection established");
            } catch (Exception e) {
                e.printStackTrace();
                response.getWriter().println("failed to establish connection: " + e);
            } finally {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }