项目为C/S三层结构。
表结构为:类型编号(TypeID,主键,自增)类型名称(TypeName), 价格(TypePrice), 加床价格(AddBedPrice), 备注(Re)
表示层:有一组文本框,可以输入数据,想表中添加记录
问题:要求插入表中的数据中TypeName不能有重复
这个方法要在业务逻辑层实现,并且当输入的TypeName有重复时,要跑出异常,提示“有重复”
该如何实现?
备注:数据访问层有方法查询该数据是否在表中存在,并返回Object值
表结构为:类型编号(TypeID,主键,自增)类型名称(TypeName), 价格(TypePrice), 加床价格(AddBedPrice), 备注(Re)
表示层:有一组文本框,可以输入数据,想表中添加记录
问题:要求插入表中的数据中TypeName不能有重复
这个方法要在业务逻辑层实现,并且当输入的TypeName有重复时,要跑出异常,提示“有重复”
该如何实现?
备注:数据访问层有方法查询该数据是否在表中存在,并返回Object值
不知道你的数据访问层查询数据是否存在是根据什么条件来查询
如果是根据TypeName的话哪么判断返回的Object是不是为Null值就行了
如果不为Null就说明存在了提示存在就行了
如果没有加一个方法TypeName来查询记录是否存在很简单的
也可以考虑用Ajax异步来返回
不存在就执行一段异常并且提示有重复不久可以了
IF NOT EXISTS (SELECT 1 FROM 表名称 WHERE(TypeName = 'ABC'))
BEGIN
INSERT INTO 表名(TypeName,TypePrice,AddBedPrice,Re)
VALUES('ABC',123.45,'ABCDEFG')
END
问题是在业务逻辑层如何捕获异常,代码如何实现?
这不更简单了吗?你只要判断返回值是不是大于0就行了呀
如果select count(*) from RoomType where TypeName = @typeName 这个Count 大于0了就说明记录已经存在了啊
就不在执行insert动作了啊
如果是等于哪么就添加进去
问题是在业务逻辑层如何捕获异常,代码如何实现? 用一个int型变量接收count,
在业务层写一个方法:public bool insertCommand()
{
if(count>0)
{
return false;
}
else
{
调用数据访问层插入方法
return true;
}
}然后在表示层,也就是页面上调用业务层insertCommand(),
返回true说明没有重复,正常插入了,false就是有重复呗
select count(*) from RoomType where TypeName = @typeName
2.根据得到的count数目,判断是否应该插入
if(count>0)
{
if(count>1)//因为typeName 不是主键,可能里面有人为脏数据
{提示信息:数据库中有脏数据}
提示信息:数据库里已有重复数据
}
else
{
插入
}