我无法在Visual Studio的列中看到变量的添加值,但可以在SQL Server中看到它们。为什么?

时间:2019-01-26 23:54:47

标签: c# sql-server visual-studio

我正在制作一个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
}

请帮助,我是初学者:)

1 个答案:

答案 0 :(得分:0)

问题是您创建的每个人的ID都为0,并且由于数据库中的ID列未标记为标识,因此SQL Server将在每次插入人时尝试插入0的值,因此是第一次将成功并插入id = 0的新人,但第二次失败,因为已经有一个id为0的人,您需要将pk标记为标识,这样SQL Server将自动处理id值,您会获胜甚至不需要从您的C#代码中发送它的值

或者您可以自己管理ID,并确保您在此列中未插入任何重复的值(不推荐)