gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:03:36 24 4
gpt4 key购买 nike

我有一个到数据库的 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 中。

  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();
}

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

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

关于c# - 检索 ODBC 表并插入 SQL Server CE 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com