C# 中的 ExecuteScalar() 正在创建重复记录

问题描述 投票:0回答:0

下面的代码将重复记录插入数据库,但这种情况并不经常发生。它在 1/50 记录中创建重复记录

 public static int CreateVisit(string connection, Hashtable htParms)
        {
            int results = 0;
            StringBuilder debug = new StringBuilder("EXEC si_Visit");
            string delim = "";

            using (SqlConnection cn = new SqlConnection(connection))
            {
                using (SqlCommand cm = new SqlCommand("si_Visit", cn))
                {
                    cm.CommandType = CommandType.StoredProcedure;
                    cm.CommandTimeout = 999;

                    foreach (DictionaryEntry dtParm in htParms)
                    {
                        string strParmName = "@" + dtParm.Key.ToString();
                        if (dtParm.Value == null)
                            cm.Parameters.Add(strParmName, DBNull.Value);
                        else
                            cm.Parameters.Add(strParmName, dtParm.Value.ToString());

                        debug.Append(string.Format("{0} {1}='{2}'", delim, strParmName, dtParm.Value));
                        delim = ",";
                    }

                    try
                    {
                        cn.Open();
                        results = (int)cm.ExecuteScalar();
                        Console.WriteLine(debug.ToString());
                    }
                    catch (Exception ex)
                    {
                        string msg = ex.Message;
                    }
                }
                cn.Close();
            }

            return results;
        }

每次调用应该只插入一条记录

c# duplicates ado.net ado
© www.soinside.com 2019 - 2024. All rights reserved.