C# 获取“此行已属于另一个表&输入数组长于此表中的列数。”

C# 获取“此行已属于另一个表&输入数组长于此表中的列数。”,c#,asp.net,repeater,C#,Asp.net,Repeater,如果使用finalTable.Rows.Addrow.ItemArray,则会显示此错误输入数组长于此表中的列数 如果我使用finalTable.Rows.Addrow,它会告诉我这一行已经属于另一个表 不知道如何解决,有什么解决方案吗?下面是一个方法,允许您通过TSQL select*从表1中选择数据库中的数据。。。然后作为datatable返回并继续处理,例如绑定表 这是怎么回事 1已生成连接字符串,如果您正在开发web应用程序,请转到下面的web.config文件add,根据SQL环境设置

如果使用finalTable.Rows.Addrow.ItemArray,则会显示此错误输入数组长于此表中的列数

如果我使用finalTable.Rows.Addrow,它会告诉我这一行已经属于另一个表


不知道如何解决,有什么解决方案吗?

下面是一个方法,允许您通过TSQL select*从表1中选择数据库中的数据。。。然后作为datatable返回并继续处理,例如绑定表

这是怎么回事

1已生成连接字符串,如果您正在开发web应用程序,请转到下面的web.config文件add,根据SQL环境设置更改参数

<configuration>
<connectionStrings>  
        <add name="PSDatabaseConnectionString" connectionString="Data Source=YourSQLserverName\SQLEXPRESS;Initial Catalog=YourDatabaseName;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
3最后,您可以将数据表绑定到其他对象datagridview、datatable。我不知道代码中的Repeater1是什么对象类型,但如果它可以接受datatable,那么它将使用返回的datatable正确绑定

    con.Open();
    cmd.Connection = con;
    cmd.CommandText = "SELECT CustomerName FROM Customers";
    SqlDataAdapter adp = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    adp.Fill(ds);
    DataTable finalTable = new DataTable();
    //finalTable.TableName = "Customers";
    if (ds.Tables.Count > 0)
    {
        int i = 1;
        DataTable firstTable = ds.Tables[0];
        //firstTable.TableName = "Customers";
        foreach (DataRow row in firstTable.Rows)
        {
            if (i == 5)
            {
                firstTable.NewRow();
                i = 0;
            }
            finalTable.Rows.Add(row);
            i++;
        }
    }

    Repeater1.DataSource = finalTable;
    Repeater1.DataBind();
    con.Close();
}                
<configuration>
<connectionStrings>  
        <add name="PSDatabaseConnectionString" connectionString="Data Source=YourSQLserverName\SQLEXPRESS;Initial Catalog=YourDatabaseName;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
    public static DataTable RunSQL_DML_FillDataGrid(string TSQL)
{
    string connectionString = ConfigurationManager.ConnectionStrings["PSDatabaseConnectionString"].ConnectionString;

    SqlDataAdapter dataAdapter;
    SqlConnection conn = new SqlConnection(connectionString);


    try
    {
        // Run TSQL on SQL server
        dataAdapter = new SqlDataAdapter(TSQL, connectionString);

        // MS Term ' Create a command builder to generate SQL update, insert, and
        // delete commands based on selectCommand. These are used to
        // update the database.

        SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);

        // Populate a new data table and return the table.
        // MS Term ' Populate a new data table and bind it to the BindingSource.
        DataTable table = new DataTable();
        table.Locale = System.Globalization.CultureInfo.InvariantCulture;
        dataAdapter.Fill(table);
        return table;
    }
    catch
    {
        return null;
    }
}