我有一个到数据库的 ODBC 连接,我需要其中的一个数据表。该表大约有 20 行和几千行数据。
我打算将此表插入到我的本地 SQL Server CE 数据库中,以便进一步使用它。两种连接都经过测试并且可以工作。
我的尝试是只插入一列以使事情变得简单(我是 C#、编程和 stackoverflow 的新手)。
OdbcConnection c = new OdbcConnection(ConnectionString1);
SqlCeConnection d = new SqlCeConnection(ConnectionString2);
c.Open();
d.Open();
string sqlC = "SELECT * FROM ODBCTABLE WHERE ODBCCOLUMN='12345'";
OdbcCommand commandC = new OdbcCommand(sqlC, c);
string sqlD = "INSERT INTO SQLCETABLE(SQLCECOLUMN) VALUES (@sql)";
SqlCeCommand commandD = new SqlCeCommand(sqlD, d);
OdbcDataReader reader = commandC.ExecuteReader();
while (reader.Read())
{
string x = reader[0].ToString();
commandD.Parameters.Add("@sql",SqlDbType.NVarChar, 5).Value = x;
commandD.ExecuteNonQuery();
}
c.Close();
c.Dispose();
d.Close();
d.Dispose();
我收到错误具有此名称的 SqlCeParameter 已包含在此 SqlCeParameterCollection 中。
- 为什么这是错误的?
- 有没有办法来解决这个问题?
- 有没有更好的方法来做到这一点
转移? (我相信 odbc 不存在 sqlbulktransfer)
- 作为我在 Stackoverflow 上的第一篇文章,我是否打算发布
问题正确吗?
更改这部分代码
commandD.Parameters.Add("@sql",SqlDbType.NVarChar, 5);
while (reader.Read())
{
string x = reader[0].ToString();
commandD.Parameters["@sql"].Value = x ;
commandD.ExecuteNonQuery();
}
出现问题的原因是,在每个循环中,您重复将相同的命名参数添加到集合中,从而导致上述错误。
将参数的创建移到循环之外并仅更新循环内的值应该可以解决该错误。
是的,我认为您正确地发布了问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)