【发布时间】:2018-03-05 11:13:29
【问题描述】:
我知道这个问题已经被问过好几次了,但没有一个答案能帮助我解决这个问题。
所以,我正在编写数据传输实用程序,将数据从 OleDb 数据库的一个表复制到另一个 OleDb 数据库的表。
我已从源数据库中读取了所有数据,我正在尝试写入,但总是出现此错误
必须声明标量变量“@CategoryID”
这是代码
// generating the insert string below
string insert = "INSERT INTO Categories VALUES (";
for(int i = 0; i < cols.Length; i++)
{
string coma = ", ";
if (i == cols.Length - 1)
coma = " )";
insert += "@" + cols[i] + coma;
}
try
{
while (src_reader.Read()) // reading from source database
{
dstcmd.CommandText = insert;
for (int i = 0; i < cols.Length; i++)
{
string temp = "@" + cols[i]; // cols is array of column names
dstcmd.Parameters.AddWithValue(temp, src_reader[cols[i]]);
// for debug purposes... below is screenshot of error
Console.Write(temp + " " + src_reader[cols[i]] + "\n");
}
Console.WriteLine("");
// point of error
dstcmd.ExecuteNonQuery();
}
}
catch(Exception ex)
{
Console.WriteLine(ex);
}
这是错误截图。
CategoryID 是表的第一列,因此是插入的第一个值。
任何帮助将不胜感激。如果我遗漏了任何信息或有什么不合理的地方,请告诉我。
【问题讨论】:
标签: c# sql sql-server ado.net oledb