在DataTable中添加新DataColumn时出错?

时间:2009-09-10 07:11:07

标签: c# ado.net

如何在新的DataTable中添加新列但是Erorr

private void LoadtoList()
{
    SqlDataAdapter sa = new SqlDataAdapter("SELECT * FROM EmpSign", _constr);
    dt = new DataTable("CCTVTable");
    sa.Fill(dt);

    dtpass = new DataTable("CCTVpassword");
    SqlDataAdapter sa2 = new SqlDataAdapter("SELECT PASSWORD FROM Emp e WHERE e.EmpID IN ('f2123', 'f2124', 'f2126', 'rt015', 'f2133')",
        ConfigurationManager.ConnectionStrings["SaraburiEmp"].ConnectionString);
    sa2.Fill(dtpass);
    DataColumn dc = new DataColumn();
    dc = dtpass.Columns["password"];
    dt.Columns.Add(dc);
}

  

列'PASSWORD'已经属于   另一个DataTable。描述:一个   未处理的异常发生在   当前网络的执行   请求。请查看堆栈跟踪   有关错误的更多信息   它起源于代码。

     

异常详细信息:   System.ArgumentException:Column   “密码”已经属于另一个人了   数据表。

     

来源错误:

Line 1040:        DataColumn dc = new DataColumn();
Line 1041:        dc = dtpass.Columns["password"];
Line 1042:        dt.Columns.Add(dc);
Line 1043:    }
Line 1044:}

3 个答案:

答案 0 :(得分:2)

首先,您必须从dtpass表中删除列:


...
DataColumn dc = dtpass.Columns["password"];
dtpass.Columns.Remove("password");
dt.Columns.Add(dc);

答案 1 :(得分:2)

您在例外消息中有解释:“列'PASSWORD'已经属于另一个DataTable

这基本上意味着您无法重复使用此列。您必须创建一个新的(类似于此密码列),然后将其添加到表。

答案 2 :(得分:0)

错误本身表示“列'PASSWORD'已经属于另一个DataTable ”。因为你已经在DataTable中使用了密码。

DDL相同,您无法在单个表中添加具有相同名称的多个数据列:)