我有一个简单的 gridview 和 sqldatasource 来将数据绑定到 gridview , SqlDatabase 我试图为列设置唯一性约束,所以如果我添加新行或更新一行并且值已经存在它不会更新。
对于列 Name ,我设置 ->Indexes/keys -> new -> selected column Name -> Unique key 。
当它在标签中说已经存在时,我怎么能得到错误?
谢谢
首先创建一个过程,如下所示:
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
然后在您的 sqldatasource 中使用此过程进行更新。按照此教程了解如何将输出参数添加到 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";
}
}
希望能帮助到你.... :)