【问题标题】:Unable to edit tables in SQL Server 2008 database using C#无法使用 C# 编辑 SQL Server 2008 数据库中的表
【发布时间】:2012-08-26 11:18:50
【问题描述】:

我正在用 c# 创建一个需要嵌入数据库的应用程序,我添加了一个新的 Service based Database 。我将它添加到应用程序中,我通过designer 创建了一个表并向其中添加了数据。在这里,我开始面临问题。我能够添加新记录,但无法编辑任何行。我注意到一个奇怪的行为。

  • 当行只有 1 或 2 时,我可以编辑它们而无需任何 问题。

  • 但是当行数变得更多时,比如 7 行中的 5 行,我无法 编辑任何行,

我遇到了一个错误

更新或删除的行值要么不使行唯一,要么 他们改变了多行

我既没有提到唯一约束也没有提到非空约束。所有列的数据类型均为text。我不确定是什么导致了这个问题。谁能解释一下这是怎么回事?

PS:有时,我也会收到屏幕截图 2 中所示的错误。对于这种情况,当我点击 Execute SQL 时,数据会被插入。


***After using an Identity column, the issue is solved. Thanks a lot guys :) 

现在出现了另一个问题,我可以在设计器中进行编辑,但我也有一个绑定到数据库的 dataGridView,我无法在其中编辑(更新)值,有什么建议吗? 这是代码,我正在使用

private void saveButton_Click(object sender, EventArgs e)
        {
                this.Validate();
                this.core3BindingSource.EndEdit();
                this.core3TableAdapter.Update(this.coreDataSet.Core3);
        }***

【问题讨论】:

  • 旁注:您应该避免使用textntextimage - those datatypes have been deprecated - 改用(n)varchar(max)varbinary(max)跨度>
  • 您的表是否设置了主键字段?您可以将表定义添加到问题中吗?
  • 非常感谢您的解决方案和 cmets 伙计们,问题在设计器视图中已解决,但在绑定到同一个数据库的 dataGridView 中我仍然面临同样的问题。我无法编辑(更新)。请检查我更新的问题。

标签: c# sql-server-2008


【解决方案1】:

Niranjan 您在表上添加主键是为了不造成完整性问题。

CREATE TABLE YourTable
(
   Id INT IDENTITY(1,1) PRIMARY KEY,
   .......
);

我建议你进行身份处理,但你可以调整你的主键,这只是额外的建议

【讨论】:

  • 是的,你是对的,添加身份解决了设计器视图中的问题,但我在绑定到同一个数据库的 dataGridView 中仍然面临同样的问题。我无法编辑(更新)。请检查我更新的问题。
【解决方案2】:

使用它可以避免重复数据

CREATE TABLE YourTable 
( 
   Id INT IDENTITY(1,1) PRIMARY KEY, 
     ....... 
); 

使用主键创建 Id 列

IDENTITY(1,1) 属性会自动增加每一行的 ID 列值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    相关资源
    最近更新 更多