是这样的,我最近遇到的问题就是,我用JAVA连接数据库的一个表格获得里面的序列号,现在我有一个文件夹里面有这里面所有数据的状态(PASS/FAIL),我也能提取这个文件夹里面所有的文件名,我现在要怎么把这两个程序结合,从数据库提取信息然后通过查找文件名来输出该序列号的通过状态,以下是我的代码:(初步判断是通过循环,能有大神帮我写一下吗)
//连接数据库
package com.zp;
import java.sql.*;
import java.sql.Connection;
import java.sql.ResultSet;
public class conn1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//得到连接
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@8.8.0.0:oorrcdfcll", "1234", "4321");
Statement sm=ct.createStatement();
ResultSet rs=sm.executeQuery("select * from 222222");
while(rs.next())
{
System.out.println("111:"+rs.getString(2));
System.out.println("222:"+rs.getString(3));
System.out.println("333:"+rs.getString(4));
}
rs.close();
sm.close();
ct.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
//文件名 出于安全考虑, 其中的IP地址和用户名密码以及文件名我都改过了
import java.io.File;
import java.util.Vector;
public class SlipArray {
public static void recursion(String root, Vector<String> vecFile) {
File file = new File(root);
File[] subFile = file.listFiles();
for (int i = 0; i < subFile.length; i++) {
if (subFile[i].isDirectory()) {
recursion(subFile[i].getAbsolutePath(), vecFile);
} else {
String filename = subFile[i].getName();
vecFile.add(filename);
}
}
}
public static void main(String[] args) {
Vector<String> vecFile = new Vector<String>();
recursion("E:/Test data1", vecFile);
for (String fileName : vecFile)
{
System.out.println(fileName);
}
}
}
//举例其中一个文件名就是172680136_1236.0033.0000.0_7_5_2017_4_55_53 PM_PASS,序列号就是172680136_...到0000.0,状态就是PASS。
从文件中读出状态放到一map中保存,key就是关联状态和数据库记录的值
然后再读数据库 , 循环输出记录的个时候,根据key从map中取出相应的状态输出,
上星期刚学的JAVA。。。说实话很多程序也是照葫芦画瓢,你方便写一下吗?因为我找了好久资料都没有解决。不行的话也没有关系:-)
@EXTRAORDIANRY:
不清楚你具体的数据,没法写,
给你个样板,你照着写就行了,有问题可以问我,
public class Test { public Map<String, String> readFromFile(File file) throws IOException { Map<String, String> result = new HashMap<>(); BufferedReader br = new BufferedReader(new FileReader(file)); String temp = ""; while ((temp = br.readLine()) != null) { String[] ss = temp.split("\t"); //文件内容的分隔符 假设为 key status result.put(ss[0], ss[1]); } return result; } public void printDBAndStatus(Map<String, String> key2Status) { try { //加载驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //得到连接 Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@8.8.0.0:oorrcdfcll", "1234", "4321"); Statement sm = ct.createStatement(); ResultSet rs = sm.executeQuery("select * from 222222"); while (rs.next()) { String key = rs.getString(1); //假设key为第一个 System.out.println("status" + key2Status.get(key)); //打印重文件读出的状态 System.out.println("111:" + rs.getString(2)); System.out.println("222:" + rs.getString(3)); System.out.println("333:" + rs.getString(4)); } rs.close(); sm.close(); ct.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Test test = new Test(); File statusFile = new File("d:/test/status.txt"); Map<String, String> key2Status = test.readFromFile(statusFile); test.printDBAndStatus(key2Status); } }
@EXTRAORDIANRY:
重点是
方法: public Map<String, String> readFromFile(File file)
和
System.out.println("status" + key2Status.get(key)); //打印重文件读出的状态
@EXTRAORDIANRY:
这里的key,就是关联 状态与数据库中记录的 关键字, 根据你数据的实际情况选择,
比如,你取出一条数据库中的记录,怎么知道其状态, 是根据记录的id,或者name 在文件中找到对应的记录,找到其状态吧, id 或者 name就是key
readFile中的数据解析,是根据我假设的结构写的,你要根据你的数据结构 做相应改动