【发布时间】:2015-05-03 16:08:27
【问题描述】:
我已经编写了代码来阻止我的主键重复。我有两张桌子。一个表保存公司详细信息,另一个表保存其他详细信息。在保存公司详细信息的表格中,公司注册号作为主键给出。它不应该被复制。但是注册号是另一个表的外键,可以随意复制。
这是我的代码:
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;
}
下面是我根据整数check的值执行SQL语句的method:
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);
}
}
}
在执行代码时出现以下异常:
请帮助我。提前致谢。
【问题讨论】:
-
如果调用相同的 add 函数,检查的意义何在?
-
你怎么知道它只检查了一次?顺便说一句,这是没有意义的,因为您只返回最后一项条件的结果
-
@chouaib 我插入了一个断点来检查迭代。
-
hein...
i增加了,还是在第一次迭代后离开了循环? (我相信不会)
标签: c# asp.net while-loop sqlexception