Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在第1行的GetColumnNumber中绑定时出错_C#_Sql_Console Application_Officewriter - Fatal编程技术网

C# 在第1行的GetColumnNumber中绑定时出错

C# 在第1行的GetColumnNumber中绑定时出错,c#,sql,console-application,officewriter,C#,Sql,Console Application,Officewriter,我在调试控制台应用程序时遇到了这个OfficeWriter错误。我使用方法从主数据库检索编码中使用的数据库的配置详细信息,结果出现了这个错误 在第1行的GetColumnNumber中绑定时出错 附件是我工作的部分代码。谁能解释一下错误是什么 SqlDataReader rdSource = getSource(); SqlDataReader rdDestination = getDestination(); SqlDataReader rdCode = getCode

我在调试控制台应用程序时遇到了这个OfficeWriter错误。我使用方法从主数据库检索编码中使用的数据库的配置详细信息,结果出现了这个错误

在第1行的GetColumnNumber中绑定时出错

附件是我工作的部分代码。谁能解释一下错误是什么

    SqlDataReader rdSource = getSource();
    SqlDataReader rdDestination = getDestination();
    SqlDataReader rdCode = getCode();

    while (rdSource.Read() && rdDestination.Read())
    {
        string src = rdSource["Value"].ToString();
        string dest = rdDest["Value"].ToString();

        ExcelTemplate XLT = new ExcelTemplate();
        XLT.Open(src);
        DataBindingProperties dataProps = XLT.CreateBindingProperties();
        XLT.BindData(rdCode, "Code", dataProps);
        XLT.Process();
        XLT.Save(dest);
    }

    //rdCode method
    SqlDataReader rdConnection = getConnection(); //method for getting connection from master
    while (rdConnection.Read())
    {
        string con = rdConnection["Value"].ToString();
        SqlConnection sqlCon = new SqlConnection(con);

        string SQL = "SELECT * FROM Sales.Currency";
        sqlCon.Open();
        SqlCommand cmd = new SqlCommand(SQL, sqlCon);
        cmd.ExecuteReader();
        sqlCon.Close();
    }
    return rdConnection;

    //getConnection method
    string strCon = ConfigurationManager.ConnectionStrings["Master"].ConnectionString;
    SqlConnection sqlCon = new SqlConnection(strCon);
    string cSQL = "SELECT Value FROM dbo.COMMON_CONFIG WHERE Value = 'Data Source=localhost;Initial Catalog=Test;Integrated Security=True'";
    SqlCommand cmd = new SqlCommand(cSQL, sqlCon);
    sqlCon.Open();
    return new SqlCommand(cSQL, sqlCon).ExecuteReader(CommandBehavior.ConnectionString);

    //getSource & getDestination methods
    string strCon = ConfigurationManager.ConnectionStrings["Master"].ConnectionString;
    SqlConnection sqlCon = new SqlConnection(strCon);
    string srcPath = @"FILE PATH NAME"; //change to destPath for getDestination
    string sSQL = "SELECT Value FROM dbo.COMMON_CONFIG WHERE Value = '" + srcPath + "'";
    SqlCommand cmd = new SqlCommand(cSQL, sqlCon);
    sqlCon.Open();
    return new SqlCommand(cSQL, sqlCon).ExecuteReader(CommandBehavior.ConnectionString);

该错误是ExcelWriter在无法将数据绑定到模板时引发的一般消息

我认为这可能是由getCode()方法引起的。在getCode()中,使用SQLDataReader检索数据库的连接字符串:

    SqlDataReader rdConnection = getConnection(); //method for getting connection from master
然后对该数据库执行SQL查询,但实际上并没有在执行SQL查询以返回数据的SqlDataReader上获得句柄

    SqlCommand cmd = new SqlCommand(SQL, sqlCon);
    cmd.ExecuteReader(); //Note: This returns the SqlDataReader that contains the data
然后返回rdConnection,它是连接字符串的SQLDataReader,而不是您试图导入的数据。rdConnection包含1行,您已经调用了Read(),因此没有可读取的记录

 SqlDataReader rdCode = getCode();
 ...
 XLT.BindData(rdCode, "Code", dataProps);
您绑定的SQL读取器是使用的“连接字符串”,而不是您的销售数据。我建议如下:

  • 返回由getCode()中的cmd.ExecuteReader()生成的新SqlDataReader,而不是rdConnection
  • 不要关闭与此新SqlDataReader的连接。ExcelWriter需要能够读取数据读取器才能绑定数据。如果关闭连接,ExcelWriter将无法正确绑定数据
    我看到您的代码将数据集中的单个记录绑定到模板,并为数据集中的每个记录生成一个新的输出文件。您是否希望为数据集中的每个记录生成输出?如果您查看我们的文档:,您只需要将SqlDataReader传递给BindData方法,我们将负责导入所有记录。否我希望绑定数据库中的所有记录并生成新的输出文件。但错误是“第1行GetColumnNumber中的错误绑定”。这里是部分编码,并没有把整个代码块的阅读方便。注:我工作的软工匠,制造商的OfficeWriter。该用户通过我们的一个支持渠道得到帮助,并确认进行上述建议的更改解决了数据绑定问题。