需要将控制台输出存储在数据库表中



我创建了一个代码,用于计算zip文件中的文件数。我目前正在将信息输出到控制台上。我不知道如何开始将输出的信息放入Microsoft SQL server中的数据库表中。我基本上只需要将它输出到MicrosoftSQL服务器中的一个表,而不是输出到控制台。我有下面的代码:

import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Enumeration;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class KZF
{
static int findNumberOfFiles(File file) {
try (ZipFile zipFile = new ZipFile(file)) {
return (int) zipFile.stream().filter(z -> !z.isDirectory()).count();
} catch (Exception e) {
return -1;
}
}

static String createInfo(File file) {
int tot = findNumberOfFiles(file) - 1;
return (file.getName() + ": " + (tot >= 0 ? tot + " files" : "Error reading zip file"));
}

public static void main(String[] args) throws IOException {
String dirLocation = "C:\Users\username\Documents\Temp\AllKo";
try (Stream<Path> files = Files.list(Paths.get(dirLocation))) {
files
.filter(path -> path.toFile().isFile())
.filter(path -> path.toString().toLowerCase().endsWith(".zip"))
.map(Path::toFile)
.map(KZF::createInfo)
.forEach(System.out::println);
}
}

要在java中与基于SQL的数据库交互,"基本层"是一个名为JDBC的库。其工作原理如下:

  1. JDBC本身和java.io.File一样是普通java的一部分。但是,这只是用于与数据库交互的基本API,它不包括对任何特定数据库的支持。这是API。

  2. 然后您需要一个所谓的JDBC驱动程序;您需要用于Microsoft SQL server的JDBC驱动程序。当你运行你的应用程序时,这个驱动程序需要在类路径上;您不需要引用任何特定的类文件或"加载"它,只需。。。确保它在类路径中,这就是您所需要的。如果这个jar在类路径上,它会自动告诉JDBC系统它的存在,然后当您要求JDBC系统连接到您的microsoft-sql数据库时,JDBC系统将使用它。因此,除了这一点之外,不需要任何东西出现在类路径中。

  3. 从简单的java代码与数据库交互的角度来看,JDBC是一个令人费解且难以使用的API:它是最低的分母;"机器代码"方面。它需要为所有可能的基于SQL的数据库引擎公开所有可能的DB功能,并为您提供在所有可能的模式下运行它的工具。因此,我强烈建议不要直接编程JDBC。相反,使用构建在JDBC之上的库,并为您提供一个好的、易于理解的API:使用JDBI或JOOQ,但我相信除非您将其与免费的DB一起使用,否则JOOQ是不免费的,而microsoft SQL也不是免费的,所以请注意,您可能需要为JOOQ支付许可费。JDBI是免费的。

换句话说:

  • 在您的构建系统中,添加com.microsoft.sqlserver :: mssql-jdbc :: 9.2.1.jre11依赖项
  • 在您的生成系统中,添加org.jdbi :: jdbi3-core :: 3.20.0依赖项
  • 阅读Microsoft SQL Server JDBC连接器URL文档,了解如何构建所谓的"JDBCURL",该URL告诉java如何连接到您的Microsoft SQL Server
  • 阅读JDBI文档。这并不难——就在首页上,您可以看到如何发送INSERT语句的基本布局。(您在上一个文档中了解到的URL?您将其传递给Jdbi.create()调用(

更简单的是,您可以使用entries((方法来获取zip文件中ZipEntry-s的枚举,并检查每个枚举是否为Directory((:

int countRegularFiles(final ZipFile zipFile) {
final Enumeration<? extends ZipEntry> entries = zipFile.entries();
int numRegularFiles = 0;
while (entries.hasMoreElements()) {
if (! entries.nextElement().isDirectory()) {
++numRegularFiles;
}
}
return numRegularFiles;
}

最新更新