sqlsugar 使用TNS连接oracle

本文介绍如何通过SqlSugar库利用TNS连接Oracle数据库,提供了一个示例代码,包括配置连接字符串和必要的步骤,以及注意事项如替换实际连接信息。

在使用SqlSugar连接Oracle数据库时,可以通过TNS来实现连接。以下是一个示例代码,展示了如何使用TNS连接Oracle数据库:

首先,确保您已经安装了Oracle客户端,并正确配置了TNS的相关信息。

// 引入SqlSugar命名空间
using SqlSugar;

// 创建SqlSugar实例
var db = new SqlSugarClient(new ConnectionConfig
{
   
   
    // 根据自己的实际情况修改下面的连接字符串
    ConnectionString = "Data Source=(
<think>我们正在处理一个关于在SpringBoot中使用TNS连接连接Oracle数据库的配置问题。根据引用[1]和[2],我们知道Oracle支持多种连接方式,包括SID、ServiceName和TNS。引用[2]特别提到了URL的写法:对于SID,URL以冒号结尾;对于服务名,URL以斜杠结尾。而TNS连接方式则使用TNS名称。在SpringBoot中,我们通常通过配置`application.properties`(或`application.yml`)来设置数据库连接。对于TNS连接,我们需要在URL中指定TNS名称,并且通常需要将TNS的配置文件(如`tnsnames.ora`)放在类路径下或者指定其位置。步骤:1.确保有OracleJDBC驱动(ojdbc)。根据引用[3],我们可以通过Maven安装本地的ojdbcjar包(因为OracleJDBC驱动不在公共Maven仓库中)。但是,现在也可以从Maven仓库直接获取(如果配置了Oracle的仓库),或者使用Oracle官方提供的依赖。2.在`application.properties`中配置数据源。对于TNS连接,URL的格式通常为:`jdbc:oracle:thin:@<TNS_NAME>`。但是,为了让驱动程序能够解析TNS名称,我们需要提供`tnsnames.ora`文件的位置,或者将TNS名称直接配置在URL中(需要额外的设置)。3.另一种做法是使用TNS别名,并在URL中指定TNS别名,同时设置系统属性`oracle.net.tns_admin`指向包含`tnsnames.ora`的目录。示例配置:假设我们有一个TNS别名`MYDB`,定义在`tnsnames.ora`文件中:```MYDB=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=your_host)(PORT=your_port))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=your_service_name)))```在SpringBoot的`application.properties`中,我们可以这样配置:方式一:通过设置系统属性指定`tnsnames.ora`的位置,然后在URL中使用TNS别名。但是,在SpringBoot中,我们可以在应用启动时设置系统属性,或者通过配置数据源URL来包含TNS信息。方式二:在URL中直接指定TNS描述(不推荐,因为太长)。例如:`spring.datasource.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=your_host)(PORT=your_port))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=your_service_name)))`但是,更常见的做法是使用TNS别名,并配置`oracle.net.tns_admin`。因此,我们可以在`application.properties`中这样写:```#设置TNS_ADMIN,指向包含tnsnames.ora的目录(可以是绝对路径,也可以是类路径)#注意:这个系统属性需要在数据源初始化之前设置,我们可以通过SpringBoot的配置来设置系统属性,但通常更灵活的方式是在启动时设置,或者使用配置类。#在application.properties中,我们可以通过spring.datasource.url来包含TNS别名,但是需要确保TNS_ADMIN已经设置。#所以,我们可以尝试在application.properties中这样配置:spring.datasource.url=jdbc:oracle:thin:@MYDB#设置系统属性(这种方式在application.properties中可能不直接支持,所以通常我们在代码中设置或者通过环境变量设置)#替代方案:在启动命令中指定系统属性,例如:-Doracle.net.tns_admin=/path/to/tns_admin```然而,在SpringBoot中,我们可以通过`@Configuration`类在启动时设置系统属性。例如:```java@ConfigurationpublicclassTnsConfig{@PostConstructpublicvoidsetTnsAdmin(){//设置TNS_ADMIN,这里假设我们将tnsnames.ora放在src/main/resources/tns目录下StringtnsAdminPath=this.getClass().getResource("/tns").getPath();System.setProperty("oracle.net.tns_admin",tnsAdminPath);}}```然后,在`application.properties`中只需要:```spring.datasource.url=jdbc:oracle:thin:@MYDBspring.datasource.username=your_usernamespring.datasource.password=your_passwordspring.datasource.driver-class-name=oracle.jdbc.OracleDriver```4.添加依赖:在pom.xml中添加OracleJDBC驱动依赖。由于Oracle驱动不在公共仓库,我们可以使用之前安装到本地仓库的方式(如引用[3]),或者使用以下方式(注意版本):```xml<dependency><groupId>com.oracle.database.jdbc</groupId><artifactId>ojdbc8</artifactId><version>21.5.0.0</version><!--或者使用其他版本,如19.3.0.0等--></dependency>```注意:从Oracle19c开始,Oracle提供了官方的Maven仓库,我们可以配置Maven仓库来获取驱动。5.将`tnsnames.ora`文件放在`src/main/resources/tns`目录下(或者你在代码中设置的路径)。这样,当应用启动时,`TnsConfig`类会在数据源初始化之前设置系统属性`oracle.net.tns_admin`,然后数据源连接使用TNS别名`MYDB`。但是,如果不想通过代码设置,也可以使用环境变量`TNS_ADMIN`(在系统环境变量中设置),或者在启动命令中指定`-Doracle.net.tns_admin=/path/to/tns`。总结配置步骤:-添加ojdbc依赖。-创建TNS配置文件(tnsnames.ora)并放在合适的位置。-设置TNS_ADMIN环境变量或系统属性指向该目录。-在application.properties中配置url为`jdbc:oracle:thin:@TNS别名`。示例代码:application.properties:```spring.datasource.url=jdbc:oracle:thin:@MYDBspring.datasource.username=scottspring.datasource.password=tigerspring.datasource.driver-class-name=oracle.jdbc.OracleDriver```TNS配置文件位置:`src/main/resources/tns/tnsnames.ora`启动时设置系统属性:可以在IDE的启动配置中设置VMoptions:`-Doracle.net.tns_admin=src/main/resources/tns`,或者在生产环境中使用绝对路径。或者使用配置类(如上)来设置。注意:在Windows和Linux中,路径的写法不同。在配置类中,我们使用`getResource`获取资源路径,这样在打包后(jar包)也能正确找到。但是,在jar包中,资源文件在类路径下,但是`tnsnames.ora`是一个文件,我们需要将其作为文件读取,而不仅仅是类路径资源。因此,我们可以将`tnsnames.ora`放在文件系统中(例如外部目录),然后在启动时指定绝对路径。另一种做法是在运行时将资源文件复制到临时文件,然后设置系统属性指向该临时文件。但这样比较复杂。因此,更常见的做法是将`tnsnames.ora`放在文件系统的某个位置(如`/etc/or
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值