我已经编写了代码来停止我的主键的重复。我有两张桌子。一张表保存公司的详细信息,另一张表保存其他详细信息。在保存公司详细信息的表格中,公司注册号码作为主键。它不应该重复。但是注册号码是另一张表格的外键,可以根据需要复制。为什么我的while循环中的'if'条件只检查一次?
这里是我的代码:
public int checkComRegnumberAvailable(string conRegnumber)
{
int check = 2;
int i = 0;
List<OtherCompany> checklist = getCompanyDetails();
while (i < checklist.Count)
{
if (checklist[i].RegNumber != conRegnumber)
{
check = 0;
i++;
}
else
{
check = 1;
i++;
}
}
return check;
}
下面是method
,我根据整数check
的值执行SQL语句:
public void AddCompanyDetails(int NDAid)
{
using (SqlConnection con = new SqlConnection(cs))
{
int check = checkComRegnumberAvailable(oc.RegNumber);
if (check == 0)
{
SqlCommand cmd = new SqlCommand("INSERT INTO OtherCompanyData (RegNumber,ComName,Country,Address,CoreBusi) values (@regnum,@comname,@country,@address,@corebusi) ", con);
cmd.Parameters.AddWithValue("@regnum", oc.RegNumber);
cmd.Parameters.AddWithValue("@comname", oc.ComName);
cmd.Parameters.AddWithValue("@country", oc.Country);
cmd.Parameters.AddWithValue("@address", oc.RegOfficeAddress);
cmd.Parameters.AddWithValue("@corebusi", oc.CoreBuss);
try
{
con.Open();
cmd.ExecuteNonQuery();
AddNDADetails(NDAid);
}
catch (SqlException ex)
{
throw ex;
}
}
else if (check == 1)
{
AddNDADetails(NDAid);
}
}
}
上执行的代码中,我得到下面的异常:
请帮帮我。提前致谢。
什么是你的检查点,如果你调用相同的附加功能? – 2015-03-03 05:08:39
你怎么知道它只被检查一次?顺便说一句,这是没有意义的,因为你只返回最后一个条件的结果 – chouaib 2015-03-03 05:11:50
@chouaib我插入了一个断点来检查迭代。 – ProblemChild 2015-03-03 05:15:40