2012-09-05 249 views
4

我有一个ODBC连接到我需要一个数据表的数据库。该表有大约20行,以及数千行数据。检索ODBC表并插入到SQL Server CE数据库中

我打算把这个表插入我的本地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包含错误

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

回答

0

更改代码

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

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

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

相关问题