如何在gridview中检查更新/插入的唯一约束?

时间:2012-05-03 20:16:01

标签: c# asp.net

我有一个简单的gridview和sqldatasource来将数据绑定到gridview,SqlDatabase 我正在尝试将列设置为唯一的约束,因此如果我添加新行或更新行并且该值已经存在它将不会更新。

对于列名称,我设置 - >索引/键 - >新的 - >选择列名称 - >独特的钥匙。

如何在标签中显示已存在的错误?

感谢

1 个答案:

答案 0 :(得分:0)

首先创建一个程序:

Create PROCEDURE [dbo].[test]
( 
@myUniquecolumn as varchar(20),
@ID    as int
)
AS
DECLARE @ReturnValue int
IF EXISTS (SELECT myUniquecolumn FROM mytable WHERE myUniquecolumn=@myUniquecolumn)
BEGIN
-- if the value already exist return 1
SELECT @ReturnValue = 1;
RETURN @ReturnValue;
END
ELSE
BEGIN
update mytable set myUniquecolumn=@myUniquecolumn where ID=@ID
SELECT @ReturnValue = 0;
RETURN @ReturnValue;
END

然后在ur sqldatasource中使用此过程进行更新。请遵循此turtorial以了解如何将输出参数添加到sql数据源。

在您的aspx sqldatasource应该类似于此之后:

    <UpdateParameters>
        <asp:Parameter Name="myUniquecolumn" Type="String" />
        <asp:Parameter Name="ID" Type="Int32" />
        <asp:Parameter DbType="Int32" Direction="ReturnValue" Name="uniqtest" />
    </UpdateParameters>

然后在您的代码后面跟随代码。

protected void SqlDataSource1_Updated(object sender, SqlDataSourceStatusEventArgs e)
{
    int uniquecolumn= (int)e.Command.Parameters["@uniqtest"].Value;

  if (uniquecolumn == 0)
    {
        Label1.Text = "Success";
    }
    else
    {
        Label1.Text = "fail";
    }
  }

希望它有所帮助.... :)