从 2 个不同的数据库中获取所有需要的数据

如何解决从 2 个不同的数据库中获取所有需要的数据

[更新] 我在这里遇到了一种情况,我需要从 2 个不同的数据库获取数据,然后将其组合成一个模型。我在这里创建了一个 API 方法来处理这个问题,但是当我开始使用第二个数据库时,我对如何检索多个项目感到非常困惑。我来解释一下。这是该方法代码

private List<FidelityModel> models;
public List<FidelityModel> getFidelityInfo2(string jobID) {
        FidelityModel fidelityInfo;
        sqlCommand command;
        sqlConnection conn;
        sqlDataReader reader;
        string cjsJobName,ipwNumber,overnight,site;
        int packageCount;
        DateTime sla;
        models = new List<FidelityModel>();
        using (conn = new sqlConnection(@"server = [servername]; database = Dropoff; Integrated Security = true;")) {
            conn.open();
            command = new sqlCommand("SELECT " +
                "[Job Name]," +
                "[Job ID]," +
                "[Package Count]," +
                "[Ship Method] " +
                "FROM [cjs_data] " +
                "WHERE [File Name] LIKE '%FDY%' AND [JOB ID] = @jobID",conn);
            command.Parameters.Add("@jobID",sqlDbType.VarChar);
            command.Parameters["@jobID"].Value = jobID;
            //restructure to assign search results to string to later assign to model,as we will search again for SLA in a different database
            using (reader = command.ExecuteReader()) {
                if (reader.HasRows) {
                    while (reader.Read()) {
                        fidelityInfo = new FidelityModel();
                        fidelityInfo.cjsJobName = reader.GetString(0);
                        fidelityInfo.ipwNumber = reader.GetString(1);
                        fidelityInfo.packageCount = reader.GetInt32(2);
                        if (fidelityInfo.cjsJobName.Contains("OVN")) { fidelityInfo.overnight = "Yes"; } else {
                            fidelityInfo.overnight = (reader.GetString(3).Equals("Overnight")) ? "Yes" : "No";
                        }
                        //site = (cjsJobName.Contains("EDG")) ? "EDGEWOOD" : "Other Site"; //not always the case
                        fidelityInfo.site = "EDGEWOOD";
                        models.Add(fidelityInfo);
                    }
                }
            }
        }
        //How to incorporate this following block of code into the same model?
        using (conn = new sqlConnection(@"server = [servername]; database = MustMail; Integrated Security = true;")) {
            conn.open();
            command = new sqlCommand("SELECT [SLA] FROM [Job] WHERE [JobID] = @jobID",sqlDbType.VarChar);
            command.Parameters["@jobID"].Value = jobID;
            using (reader = command.ExecuteReader()) {
                if (reader.HasRows) {
                    while (reader.Read()) {
                        //fidelityInfo.sla = reader.GetDateTime(0);
                    }
                }
            }
        }
        return models;
    }

正如您现在所看到的,我只是让它在不获取 SLA 的情况下工作,因为我不知道如何将我从第二个数据库获取的结果实际添加到同一模型中。

解决方法

为 DataReader 中的每一行创建一个新的 FidelityModel 并将其添加到列表中。类似的东西:

while (reader.Read()) 
{
  var m = new FidelityModel()
  {
   cjsJobName = reader.GetString(0),ipwNumber = reader.GetString(1),packageCount = reader.GetInt32(2),sla = DateTime.Now
  };
  if (m.cjsJobName.Contains("OVN")) 
  { 
    m.overnight = "Yes"; 
  } 
  else 
  {
    m.overnight = (reader.GetString(3).Equals("Overnight")) ? "Yes" : "No";
  }
  models.Add(m);
}  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?