SqlCommand cmd = new SqlCommand("cheParameter_ADD",con); //这句也有点问题吧?你的命令应该 在加入一个品牌,如果这个品牌存在就返回是不?
(1)可以在添加前先检索看看有没有,如果返回值了说明数据已存在。 (2)可以在添加数据的存储过程里判断,如果数据存在返回'false',如果数据不存在就执行添加并返回'true'. (2)的参考: create proc SelectTable @ID int, @Out varchar(10) OUT as select * from 数据表 where 查询条件=@ID if @@ROWCOUNT >0 set @Out='fasle' else begin set @Out='true' 执行添加操作 end--可以另做个存储过程,或其他的判断形式 DECLARE @tt varchar(10) exec selectTable 传入数据(@ID值),@tt OUT select @tt;
在过程中直接抛出异常,例如:if exists(select * from table where ....) begin RAISERROR ("在参数%s和参数%d处发现有一个毛毛虫", 16, 1, @param_1, @Param_2) else ....... end 不要把异常当作正常输出来设计,不要用含糊的概念搞乱自己。
请见着贴!!!
{
par_id.Text = Request.QueryString["cheID"].ToString();if(!IsPostBack)
{
SqlConnection con = DataCon.AutoCon();
con.Open();SqlCommand cma = new SqlCommand("select * from cnat_nf",con);
SqlDataReader sda = cma.ExecuteReader();
this.par_lhb.DataSource = sda;
this.par_lhb.DataTextField = "cnat_nf";
this.par_lhb.DataValueField = "cnat_id";
this.par_lhb.DataBind();
this.par_lhb.Items.Insert(0,new ListItem("—请选推出年份—","-1"));
sda.Close();
con.Close();
}
这里少了一个 “}” 你 运行的时候 没报错?
(2)可以在添加数据的存储过程里判断,如果数据存在返回'false',如果数据不存在就执行添加并返回'true'.
(2)的参考:
create proc SelectTable
@ID int,
@Out varchar(10) OUT
as
select * from 数据表 where 查询条件=@ID
if @@ROWCOUNT >0
set @Out='fasle'
else
begin
set @Out='true'
执行添加操作
end--可以另做个存储过程,或其他的判断形式
DECLARE @tt varchar(10)
exec selectTable 传入数据(@ID值),@tt OUT
select @tt;
http://msdn2.microsoft.com/zh-cn/library/ms179296.aspxtry
{
lhb = cmd.ExecuteNonQuery();
}
catch (sqlException e)
{
//处理SQL Server异常。可以访问错误号、错误源代码、过程名、错误信息等许多信息。
}
catch(Exception e)
{
//处理其它信息
}
RAISERROR ("在参数%s和参数%d处发现有一个毛毛虫", 16, 1, @param_1, @Param_2)
else
.......
end
不要把异常当作正常输出来设计,不要用含糊的概念搞乱自己。