提交 d087e089 authored 作者: 宋勇's avatar 宋勇

修改access 链接用户名称密码

上级 ee1e5f57
...@@ -67,6 +67,12 @@ ...@@ -67,6 +67,12 @@
<artifactId>httpclient</artifactId> <artifactId>httpclient</artifactId>
<version>4.5.14</version> <version>4.5.14</version>
</dependency> </dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.21</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
...@@ -33,7 +33,9 @@ import java.io.InputStream; ...@@ -33,7 +33,9 @@ import java.io.InputStream;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.sql.*; import java.sql.*;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.Date;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -43,7 +45,13 @@ import static com.google.common.base.Preconditions.checkNotNull; ...@@ -43,7 +45,13 @@ import static com.google.common.base.Preconditions.checkNotNull;
public class AccessJdbcDataSourceChannel implements DataSourceChannelExt { public class AccessJdbcDataSourceChannel implements DataSourceChannelExt {
List<String> typeList = Arrays.asList("varchar", "char", "json"); List<String> typeList = Arrays.asList("varchar", "char", "json");
private ConcurrentHashMap<String, Connection> concurrentHashMap = new ConcurrentHashMap<>(1); private LocalDateTime fileDate;
public LocalDateTime getFileId(){
return fileDate;
}
private ConcurrentHashMap<String, FilieInfo> concurrentHashMap = new ConcurrentHashMap<>(1);
public static class Holder { public static class Holder {
private static final AccessJdbcDataSourceChannel INSTANCE = private static final AccessJdbcDataSourceChannel INSTANCE =
...@@ -253,11 +261,11 @@ public class AccessJdbcDataSourceChannel implements DataSourceChannelExt { ...@@ -253,11 +261,11 @@ public class AccessJdbcDataSourceChannel implements DataSourceChannelExt {
if (StringUtils.isBlank(substring)) { if (StringUtils.isBlank(substring)) {
throw new RuntimeException("没找到文件名称!"); throw new RuntimeException("没找到文件名称!");
} }
Connection conn = null;
String database = "";
Connection connection = concurrentHashMap.get(url); FilieInfo filieInfo = concurrentHashMap.get(url);
if (connection != null) { if (filieInfo==null || filieInfo.getDateTime().plusMinutes(1).isBefore(LocalDateTime.now())) {
return connection;
}
String[] split = substring.split("\\."); String[] split = substring.split("\\.");
String prefix = split[0]; String prefix = split[0];
...@@ -270,7 +278,6 @@ public class AccessJdbcDataSourceChannel implements DataSourceChannelExt { ...@@ -270,7 +278,6 @@ public class AccessJdbcDataSourceChannel implements DataSourceChannelExt {
Statement state = null; Statement state = null;
// 定义结果集对象 // 定义结果集对象
ResultSet rs = null; ResultSet rs = null;
Connection conn = null;
File path = new File("/tmp"); File path = new File("/tmp");
if (!path.exists()) { if (!path.exists()) {
...@@ -314,8 +321,18 @@ public class AccessJdbcDataSourceChannel implements DataSourceChannelExt { ...@@ -314,8 +321,18 @@ public class AccessJdbcDataSourceChannel implements DataSourceChannelExt {
} }
} }
String database = path + "/" + file.getName(); database = path + "/" + file.getName();
database = database.replace("\\", "/"); database = database.replace("\\", "/");
FilieInfo newFile=new FilieInfo();
newFile.setDatabase(database);
newFile.setDateTime(LocalDateTime.now());
concurrentHashMap.put(url, newFile);
} else {
FilieInfo filieInfo1 = concurrentHashMap.get(url);
database = filieInfo1.getDatabase();
}
// JDBC连接字符串 // JDBC连接字符串
// 在application.properties或application.yml文件中配置数据库连接信息。你需要指定驱动类名为net.ucanaccess.jdbc.UcanaccessDriver,并提供Access数据库的URL。例如,URL可以是jdbc:ucanaccess://D:/Access2003/database/db_test.mdb;openExclusive=false;ignoreCase=true。[1] // 在application.properties或application.yml文件中配置数据库连接信息。你需要指定驱动类名为net.ucanaccess.jdbc.UcanaccessDriver,并提供Access数据库的URL。例如,URL可以是jdbc:ucanaccess://D:/Access2003/database/db_test.mdb;openExclusive=false;ignoreCase=true。[1]
...@@ -328,8 +345,6 @@ public class AccessJdbcDataSourceChannel implements DataSourceChannelExt { ...@@ -328,8 +345,6 @@ public class AccessJdbcDataSourceChannel implements DataSourceChannelExt {
conn = DriverManager.getConnection(connectionString, user, pwd); conn = DriverManager.getConnection(connectionString, user, pwd);
System.out.println("Connected to the database successfully"); System.out.println("Connected to the database successfully");
concurrentHashMap.put(url, conn);
return conn; return conn;
} }
......
package org.apache.seatunnel.datasource.plugin.access.jdbc;
import java.time.LocalDateTime;
/**
* @description:TODO
* @author: sy
* @create: 2024/4/14 22:53
*/
public class FilieInfo {
private String database;
private LocalDateTime dateTime;
public String getDatabase() {
return database;
}
public void setDatabase(String database) {
this.database = database;
}
public LocalDateTime getDateTime() {
return dateTime;
}
public void setDateTime(LocalDateTime dateTime) {
this.dateTime = dateTime;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论