为了账号安全,请及时绑定邮箱和手机立即绑定

获取 Teradata 数据源连接的异常

获取 Teradata 数据源连接的异常

侃侃无极 2021-10-28 14:20:10
我试图在我的控制器中注入数据源并使用那个(数据源)我想要连接对象。我正在使用 spring boot 我已经编写了两个配置类,一个用于 Oracle 连接,另一个用于 Teradata 连接对于 oracle 一切正常,但对于创建 teradata 数据源,我无法确定任何好的示例,因此我的配置如下所示:@Component@Configuration@ConfigurationProperties("application")public class TeradataConfiguration {@NotNull    private String usernameTeradata;@NotNullprivate String passwordTeradata;@NotNullprivate String servernameTeradata;@NotNullprivate String charsetTeradata;@NotNullprivate String tmodeTeradata;@NotNullprivate String dsnameTeradata;@NotNullprivate String portTeradata;@NotNullprivate String timeoutTeradata;public void setUsernameTeradata(String usernameTeradata) {    this.usernameTeradata = usernameTeradata;}public void setPasswordTeradata(String passwordTeradata) {    this.passwordTeradata = passwordTeradata;}public void setServernameTeradata(String servernameTeradata) {    this.servernameTeradata = servernameTeradata;}public void setCharsetTeradata(String charsetTeradata) {    this.charsetTeradata = charsetTeradata;}public void setTmodeTeradata(String tmodeTeradata) {    this.tmodeTeradata = tmodeTeradata;}public void setDsnameTeradata(String dsnameTeradata) {    this.dsnameTeradata = dsnameTeradata;}public void setPortTeradata(String portTeradata) {    this.portTeradata = portTeradata;}public void setTimeoutTeradata(String timeoutTeradata) {    this.timeoutTeradata = timeoutTeradata;}在此之后,我将这个 bean 注入到我的控制器中,但是当我这样做时:teraDataSource.getConnection();以下是我正在使用的属性:> application.servernameTeradata=server.com> application.usernameTeradata=user > application.passwordTeradata=pass> application.charsetTeradata=UTF8 > application.tmodeTeradata=ANSI> application.dsnameTeradata=TEST_DB > application.portTeradata=1025> application.timeoutTeradata=180000我能够使用 Class.forName("Driver Name") 通过普通 jdbc 连接到 teradata,但面临数据源问题。提前致谢
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

经过一些研发和马克的帮助,我能够使配置工作。我正在发布解决方案,以便其他人可以从答案中受益。


如果您有这样的 teradata 网址:jdbc:teradata://server_name/database=database_nane,tmode=ANSI,charset=UTF8


数据源配置文件应如下所示:


@Component

@Configuration

@ConfigurationProperties("application")

public class TeradataConfiguration {


    @NotNull

    private String usernameTeradata;


    @NotNull

    private String passwordTeradata;


    @NotNull

    private String servernameTeradata;


    @NotNull

    private String charsetTeradata;


    @NotNull

    private String tmodeTeradata;


    @NotNull

    private String dsnameTeradata;


    @NotNull

    private String portTeradata;


    public void setUsernameTeradata(String usernameTeradata) {

        this.usernameTeradata = usernameTeradata;

    }



    public void setPasswordTeradata(String passwordTeradata) {

        this.passwordTeradata = passwordTeradata;

    }



    public void setServernameTeradata(String servernameTeradata) {

        this.servernameTeradata = servernameTeradata;

    }



    public void setCharsetTeradata(String charsetTeradata) {

        this.charsetTeradata = charsetTeradata;

    }



    public void setTmodeTeradata(String tmodeTeradata) {

        this.tmodeTeradata = tmodeTeradata;

    }



    public void setDsnameTeradata(String dsnameTeradata) {

        this.dsnameTeradata = dsnameTeradata;

    }



    public void setPortTeradata(String portTeradata) {

        this.portTeradata = portTeradata;

    }


    @Bean

    DataSource teraDataSource() throws SQLException {


        TeraDataSource teraDataSource = new TeraDataSource();

        //This is username

        teraDataSource.setuser(usernameTeradata);

        //This is password

        teraDataSource.setpassword(passwordTeradata);

        //Charset which could be UTF-8 or something else

        teraDataSource.setCharSet(charsetTeradata);

        //Tmode which could be ANSII or something else

        teraDataSource.setTMODE(tmodeTeradata);

        //This is your server name

        teraDataSource.setDSName(servernameTeradata);

        //This is teradata port which by default is 1025

        teraDataSource.setDbsPort(portTeradata);

        //This is your data base name

        teraDataSource.setDatabaseName(dsnameTeradata);

        return teraDataSource;


    }

}

在此之后,只需将此 bean 注入您的类中即可


teraDataSource.getConnection()

这将为您提供teradata连接。


查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信