我在 Visual Studio 的列中看不到变量的附加值,但我在 SQL 服务器中看到了它们。为啥?
Posted
技术标签:
【中文标题】我在 Visual Studio 的列中看不到变量的附加值,但我在 SQL 服务器中看到了它们。为啥?【英文标题】:I cannot see the added values for the variables in the columns in Visual Studio, but I see them in the SQL server. Why?我在 Visual Studio 的列中看不到变量的附加值,但我在 SQL 服务器中看到了它们。为什么? 【发布时间】:2019-01-26 23:54:46 【问题描述】:我正在制作一个用于从 MS SQL 服务器添加和读取客户的 Visual Studio 项目。无法看到我通过 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
请帮忙,我是初学者:)
【问题讨论】:
嘿,您是什么意思,在 Visual Studio 中看不到变量的值?此外,当您运行代码并单击按钮时会发生什么?是否将新客户添加到数据库中? 是的,但我只能在 SQL 表中看到。 当我尝试在 Visual Studio 中添加时,我收到以下消息:“System.Data.SqlClient.SqlException:'违反主键约束'PK__Person__3214EC070A523E0B'。无法在对象'dbo.Person 中插入重复键'。重复键值为 (0)。语句已终止。' " 您似乎在一遍又一遍地尝试添加 ID=0 的客户。 您应该将 ID 列设置为使用 IDENTITY 自动递增 【参考方案1】:问题是你创建的每个人的 id 都是 0 ,并且由于数据库中的 ID 列没有标记为身份 SQL 服务器将尝试在每个人插入时插入 0 的值,所以第一次它将成功并插入 id = 0 的新人,但第二次将失败,因为已经有一个 id 为 0 的人需要将 pk 标记为身份,这样 SQL Server 将自动处理 id 值并且你赢了'甚至不需要从你的 C# 代码中发送它的值
或者您可以自己管理 ID,并确保您没有在此列中插入任何不推荐的重复值
【讨论】:
我在 SQL 中添加了 SET IDENTITY_INSERT Person on ,但现在我得到了这个:“ System.Data.SqlClient.SqlException: 'Cannot insert explicit value for identity column in table 'Person' when IDENTITY_INSERT is set to离开。' " 正如我所说,如果您将 ID 列设置为标识,SQL 服务器将处理此列的插入,并为您创建一个序列,以便您可以按升序排列 1 ,2,3,4,5,6 等您唯一需要做的就是不要将 C# 代码中的 ID 值发送到数据库以上是关于我在 Visual Studio 的列中看不到变量的附加值,但我在 SQL 服务器中看到了它们。为啥?的主要内容,如果未能解决你的问题,请参考以下文章
我在 Visual Studio Code-JavaScript 中看不到输出
Visual Studio 中的 DB 项目中的 DB 视图在同一项目中看不到同义词
cmake 项目在 Visual Studio 2017 中看不到
Windbg可以看到Visual Studio中看不到的有效函数调用堆栈