我有一个数据库,我插入一些数据。我遇到的问题是它会添加更多的数据。
当logfordb.pos增加时,它将再次添加所有prevoius数据,下次它将添加更多。
这是代码......减少conn string和parametres。
public void WriteToDatabase(DatabaseLog logfordb)
{
conn.Open();
var cmd = new SqlCommand();
cmd.CommandText = "Insert INTO [X] (Y, Z, C " + "Values (@val1, @val2, @val3";
for (int index = 0; index < logfordb.ListofDB[logfordb.pos].X.Count; index++)
{
cmd.Connection = conn;
cmd.Parameters.Clear();
if (logfordb.ListofDB[logfordb.pos].X[index].Details != null)
{
cmd.Parameters.AddWithValue("@val1", logfordb.ListofDB[logfordb.pos].X[index].Details.Age);
cmd.Parameters.AddWithValue("@val2", logfordb.ListofDB[logfordb.pos].X[index].Details.Name);
cmd.Parameters.AddWithValue("@val3", logfordb.ListofDB[logfordb.pos].X[index].Details.Etc);
cmd.ExecuteNonQuery();
}
}
conn.Close();
logfordb.pos += 1;
}
答案 0 :(得分:1)
好像你想要改变logfordb.pos的值我想你想通过ref传递logfordb。我怀疑值没有改变,第二次调用这个函数你最终再次添加相同的数据,因为这个范围之外的值不是只改变函数看到的本地副本(然后存在破坏引用改变)。
答案 1 :(得分:0)
每次调用此代码时,您的代码都会遍历整个logfordb。
您有三种选择:
其中,选项1可能是你最安全的选择。