我正在编写一个简单的c#应用程序,其中我从文件中读取一行,将其拆分,并在适当的转换后将相应的标记插入到访问数据库中。我正在使用流阅读器逐行读取输入文件。这是我的代码片段。
using(reader = Streamreader(filepath)
{
while((line = reader.readline()) != null)
{
string[] tokens = line.split('\t');
mycommand.commandtext = "INSERT INTO table_name (name, property) VALUES (@xname, @xproperty)";
mycommand.parameters.addwithvalue("@xname", tokens[0]);
mycommand.parameters.addwithvalue("@xproperty", float.parse(tokens[1]);
mycommand.executenonquery();
}
}
问题是如果输入文件包含6个不同的行,那么只有与第一行关联的值会重复6次到我的数据库中。我做错了什么?
答案 0 :(得分:1)
您无法在循环中替换参数,因为OleDBCommand不支持命名参数。参数替换是按照添加参数的顺序进行的,因此您必须在每次运行时创建一个新命令,因为第二个循环运行时会添加第三个和第四个参数(而您只使用两个参数)。