2012-09-05 270 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();  
} 

的這部分問題的出現是因爲,在每一個循環中,重複相同的命名參數的添加,導致上述錯誤的集合。
在循環外部移動參數的創建並僅更新循環內的值應解決錯誤。

是的,我想你已經正確地發佈了這個問題。

相關問題