检索ODBC表并插入SQL Server CE数据库

我有一个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(); 

我收到错误此SqlCeParameterCollection已包含具有此名称的SqlCeParameter。

  1. 为什么这是错的?
  2. 有没有办法来解决这个问题?
  3. 有没有更好的方法来进行此转移? (我相信odbc不存在sqlbulktransfer)
  4. 作为我在Stackoverflow上的第一篇文章,我是否正确地发布了一个问题?

更改代码的这一部分

 commandD.Parameters.Add("@sql",SqlDbType.NVarChar, 5); while (reader.Read()) { string x = reader[0].ToString(); commandD.Parameters["@sql"].Value = x ; commandD.ExecuteNonQuery(); } 

出现问题的原因是,在每个循环中,您重复向集合添加相同的命名参数,从而导致上述错误。
在循环外部移动参数的创建并仅更新循环内的值应该可以解决错误。

是的,我认为你已经正确地发布了这个问题。