如何在 C# 中将数据从对象填充到数据表

本文关键字:对象 填充 数据表 数据 | 更新日期: 2023-09-27 18:36:44

我是.net代码的新手。我可以理解代码,但感觉很难进行更改。我调用该方法"线程"并传递对象参数.我想在该对象中填充数据以填充数据表。但是,我在这一点上遇到了错误。我正在粘贴下面的所有代码,请做必要的帮助。以下是我收到的错误消息:"对象不是ADODB。记录集或 ADODB。记录。''r'参数名称: adodb"错误在步骤oleDA1.Fill(dt1,don);

public class Report
   {
        public string ScheduleId;
        public string reportName;
        public string Frequency;
        public string Customer;
        public string Code;
        public string ReportPath;
        public string ReportId;
        public string ReportFormat;
        public string StartDate;
        public string EndDate;
    }
public List<Report> Populatereport(object SSISreport)
    {
        List<Report> list = new List<Report>();
        Report al = null;
        bool fireAgain = true;
        using (OleDbDataAdapter oleDA = new OleDbDataAdapter())
        using (DataTable dt = new DataTable())
        {
               oleDA.Fill(dt, SSISreport);
                foreach (DataRow _row in dt.Rows)
                {
                    al = new Report();
                    al.reportName = _row["ReportName"].ToString();
                    al.ScheduleId = _row["ScheduleId"].ToString();
                    al.Frequency = _row["Frequency"].ToString();
                    al.Customer = _row["Customer"].ToString();
                    al.Code = _row["code"].ToString();
                    al.ReportId = _row["ReportId"].ToString();
                    al.ReportFormat = _row["ReportFormat"].ToString();
                    al.ReportPath = _row["ReportPath"].ToString();
                    al.StartDate = _row["StartDate"].ToString();
                    al.EndDate = _row["EndDate"].ToString();
                    list.Add(al);
                }
        }
        return list;
    }
 private object threading(object don)
    {
        Report aa = new Report();
        DataRow row1;
        ReportEnv env = null;           
        using (OleDbDataAdapter oleDA1 = new OleDbDataAdapter())
        using (DataTable dt1 = new DataTable())
        {
            oleDA1.Fill(dt1, don);--err0r at this point
            row1 = dt1.Rows[0];

            aa.reportName = row1["ReportName"].ToString();
            aa.ScheduleId = row1["ScheduleId"].ToString();
            aa.Frequency = row1["Frequency"].ToString();
            aa.Customer = row1["Customer"].ToString();
            aa.ColcoCode = row1["code"].ToString();
            aa.ReportId = row1["ReportId"].ToString();
            aa.ReportFormat = row1["ReportFormat"].ToString();
            aa.ReportPath = row1["ReportPath"].ToString();
            aa.StartDate = row1["StartDate"].ToString();
            aa.EndDate = row1["EndDate"].ToString();
        }
        ParameterValue[] paramval = new ParameterValue[5];
        paramval[0] = new ParameterValue();
        paramval[0].Name = "Startdate";
        paramval[0].Value = aa.StartDate;
        paramval[1] = new ParameterValue();
        paramval[1].Name = "Enddate";
        paramval[1].Value = aa.EndDate;
        paramval[2] = new ParameterValue();
        paramval[2].Name = "ReportID";
        paramval[2].Value = aa.ReportId;
        paramval[3] = new ParameterValue();
        paramval[3].Name = "Code";
        paramval[3].Value = aa.Code;
        paramval[4] = new ParameterValue();
        paramval[4].Name = "Frequency";
        paramval[4].Value = aa.Frequency;
        ReportExecutionService rs = new ReportExecutionService();
        rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
        rs.Url = "some url";
        rs.LoadReport(aa.ReportPath, null);
        rs.SetExecutionParameters(paramval, "en-GB");
        String filename = env.Code + "_" + aa.reportName + DateTime.UtcNow.ToString("_dd-MM-yyyy_hh-mm-ss.fff") + "." + aa.ReportFormat;
        //Render the report and generate pdf
        Byte[] results;
        string encoding = String.Empty;
        string mimeType = String.Empty;
        string extension = String.Empty;
        Warning[] warnings = null;
        string[] streamIDs = null;
        string deviceInfo = null;
        results = rs.Render(aa.ReportFormat, deviceInfo, out extension, out encoding, out mimeType, out warnings, out streamIDs);

        using (FileStream stream = File.OpenWrite(path+ filename))
        {
            stream.Write(results, 0, results.Length);
        }
     return null;
    }
 public void Main()
    {
        List<Report> aq = new List<Report>();
        aq = Populatereport(Dts.Variables["vnSource_SQL_Result"].Value);
        for (int i = 0; i < aq.Count; i++)
        {
                threading(aq[i]);
                         }   
              }        

如何在 C# 中将数据从对象填充到数据表

检查您的报告类,我想它应该根据 msdn 强制转换为记录集或记录:https://msdn.microsoft.com/en-us/library/5s322715(v=vs.110).aspx