Java 需要将控制台输出存储在数据库表中
我创建了一个计算zipfile中文件数量的代码。我目前正在将信息输出到控制台上。我不知道如何开始将输出的信息放入Microsoft SQL server中的数据库表中。我基本上只需要将它输出到MicrosoftSQLServer中的表中,而不是输出到控制台。我的代码如下:Java 需要将控制台输出存储在数据库表中,java,sql-server,zipfile,Java,Sql Server,Zipfile,我创建了一个计算zipfile中文件数量的代码。我目前正在将信息输出到控制台上。我不知道如何开始将输出的信息放入Microsoft SQL server中的数据库表中。我基本上只需要将它输出到MicrosoftSQLServer中的表中,而不是输出到控制台。我的代码如下: import java.io.File; import java.io.IOException; import java.io.PrintStream; import java.nio.file.Files; impo
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.io.File;
导入java.io.IOException;
导入java.io.PrintStream;
导入java.nio.file.Files;
导入java.nio.file.Path;
导入java.nio.file.path;
导入java.util.Enumeration;
导入java.util.stream.collector;
导入java.util.stream.stream;
导入java.util.zip.ZipEntry;
导入java.util.zip.ZipFile;
公共类KZF
{
静态int findNumberOfFiles(文件){
try(ZipFile-ZipFile=new-ZipFile(文件)){
return(int)zipFile.stream().filter(z->!z.isDirectory()).count();
}捕获(例外e){
返回-1;
}
}
静态字符串createInfo(文件){
int tot=findNumberOfFiles(文件)-1;
返回(file.getName()+“:”+(tot>=0?tot+“文件”:“读取zip文件时出错”);
}
公共静态void main(字符串[]args)引发IOException{
String dirLocation=“C:\\Users\\username\\Documents\\Temp\\AllKo”;
try(Stream files=files.list(path.get(dirLocation))){
文件夹
.filter(路径->路径.toFile().isFile())
.filter(path->path.toString().toLowerCase().endsWith(“.zip”))
.map(路径::toFile)
.map(KZF::createInfo)
.forEach(System.out::println);
}
}
更简单的是,您可以使用entries()方法获取zip文件中ZipEntry-s的枚举,并检查每个ZipEntry-s是否为directory():
int countRegularFiles(最终ZipFile ZipFile){
最终枚举要与java中基于SQL的数据库交互,“基本层”是一个名为JDBC的库。其工作原理如下:
JDBC本身是纯java的一部分,就像java.io.File
一样。然而,这只是用于与数据库交互的基本API,它不包括对任何特定数据库的支持
然后你需要一个所谓的JDBC驱动程序;你需要。当你运行你的应用程序时,这个驱动程序需要在类路径上;你不需要引用任何特定的类文件或“加载”它,只要…确保它在类路径上,这就是你所需要的。这个jar,如果在类路径上,会自动告诉JDBC系统它的存在,并且然后,当您要求JDBC系统连接到microsoft sql数据库时,JDBC系统将使用它。因此,除此之外,在类路径上不需要其他任何东西
从纯java代码与DBs交互的角度来看,JDBC是一个复杂且难以使用的API:它是最低的分母;是“机器代码”方面。它需要为所有可能的基于SQL的数据库引擎公开所有可能的DB功能,并为您提供在所有可能模式下运行它的工具强烈建议您不要直接编写JDBC。相反,请使用构建在JDBC之上的库,并为您提供一个好的、易于理解的API:use-or,但我相信JOOQ不是免费的,除非您与免费的DB一起使用,而且microsoft SQL不是免费的,所以请注意,您可能需要为JOOQ支付许可费。JDBI是免费的
换言之:
- 在生成系统中,添加依赖项
- 在生成系统中,添加依赖项
- 阅读关于如何构建所谓的“JDBCURL”的文章,它告诉java如何连接到microsoft SQL server
- 阅读。这并不难-就在首页上,您可以看到如何发送INSERT语句的基本布局。(您在上一篇文档中了解的URL?您可以将其传递给
Jdbi.create()
调用)
该问题询问如何与来自java的数据库进行交互,并粘贴了一些代码以澄清该问题。对于与代码质量无关的评论,答案可能不是最好的地方,尤其是这个问题,它似乎不是一个改进。
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;
}