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

Posted

技术标签:

【中文标题】检索 ODBC 表并插入 SQL Server CE 数据库【英文标题】:Retrieve ODBC table and Insert into SQL Server CE database 【发布时间】:2012-09-05 21:08:09 【问题描述】:

我有一个到数据库的 ODBC 连接,我需要一个数据表。该表有大约 20 行和几千行数据。

我打算将此表插入到我的本地 SQL Server CE 数据库中,以便进一步使用。两种连接都已经过测试并且可以正常工作。

我的尝试只是插入一列以保持简单(我是 C#、编程和 *** 的新手)。

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) 作为我在 *** 上的第一篇文章,我是否打算发布一个 问题正确吗?

【问题讨论】:

【参考方案1】:

更改这部分代码

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

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

是的,我认为您已正确发布问题。

【讨论】:

以上是关于检索 ODBC 表并插入 SQL Server CE 数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用带有R的odbc库将SQL Server插入单个值

如何使用 ODBC 在 SQL Server 2000 中获取最后插入的 id?

获取最后插入记录的 ID - Access DAO、ODBC、SQL Server 2008 身份字段

SQL Server Native Client / ODBC Driver for SQL Server & DAO 无法将 blob > 8k 插入 varbinary(MAX) 字

[Microsoft][ODBC SQL Server Driver][SQL Server]无法将 NULL 值插入列 'msrepl_tran_version,该列不允许

将 100 万条记录从 SQL Server 插入 BigQuery 表,通过 CDATA odbc 驱动程序链接