我正在制作一个Visual Studio项目,用于从MS SQL服务器添加和读取客户。我通过Visual Studio广告的值无法看到。
这是SQL代码:
create Table Person
(
Id int PRIMARY KEY,
FirstName varchar (15),
LastName varchar (15),
TaxNbr int,
BirthDate DATETIME,
AktivStatus varchar (15),
);
这是C#中要为客户添加新值的部分:
private void Button_AddCustomer(object sender, RoutedEventArgs e)
{
Person customer = new Person();
int number;
customer.FirstName = FirstName.Text.Trim();
customer.LastName = LastName.Text.Trim();
if (int.TryParse(TaxNbr.Text, out number) == false) MessageBox.Show("Must add a valid tax number");
if (number < 0 || number > 999) MessageBox.Show("Invalid Tax Number. Must be between 0 and 999");
else customer.TaxNbr = number;
customer.BirthDate = BirthDate.DisplayDate;
if (Aktiven.IsChecked == true) customer.AktivStatus = "Aktiven";
if (Neaktiven.IsChecked == true)
{
customer.AktivStatus = "Neaktiven";
}
CustomerClass.AddCustomer(customer);
DialogResult = true;
}
我已将其与SQL类连接起来
public static class CustomerClass
{
#region
public static void AddCustomer(Person customer)
{
using (CustomerDataContext conn = new CustomerDataContext())
{
conn.Persons.InsertOnSubmit(customer);
conn.SubmitChanges();
}
}
#endregion
}
请帮助,我是初学者:)
答案 0 :(得分:0)
问题是您创建的每个人的ID都为0,并且由于数据库中的ID列未标记为标识,因此SQL Server将在每次插入人时尝试插入0的值,因此是第一次将成功并插入id = 0的新人,但第二次失败,因为已经有一个id为0的人,您需要将pk标记为标识,这样SQL Server将自动处理id值,您会获胜甚至不需要从您的C#代码中发送它的值
或者您可以自己管理ID,并确保您在此列中未插入任何重复的值(不推荐)