项目为C/S三层结构。
表结构为:类型编号(TypeID,主键,自增)类型名称(TypeName), 价格(TypePrice), 加床价格(AddBedPrice), 备注(Re)
表示层:有一组文本框,可以输入数据,想表中添加记录
问题:要求插入表中的数据中TypeName不能有重复
这个方法要在业务逻辑层实现,并且当输入的TypeName有重复时,要跑出异常,提示“有重复”
该如何实现?
备注:数据访问层有方法查询该数据是否在表中存在,并返回Object值

解决方案 »

  1.   

    在录入之间先跟据TypeNames询查该数据是否存在
    不知道你的数据访问层查询数据是否存在是根据什么条件来查询
    如果是根据TypeName的话哪么判断返回的Object是不是为Null值就行了
    如果不为Null就说明存在了提示存在就行了
    如果没有加一个方法TypeName来查询记录是否存在很简单的
    也可以考虑用Ajax异步来返回
      

  2.   

    根据返回的Object判断是否存在。
    不存在就执行一段异常并且提示有重复不久可以了
      

  3.   

    执行下面的SQL语句,检查返回的影响行数,为1表示正常插入,否则表示已经存在。
    IF NOT EXISTS (SELECT 1 FROM 表名称 WHERE(TypeName = 'ABC'))
    BEGIN
       INSERT INTO 表名(TypeName,TypePrice,AddBedPrice,Re)
                 VALUES('ABC',123.45,'ABCDEFG')
    END
      

  4.   

    数据访问层是 :select count(*) from RoomType where TypeName = @typeName
    问题是在业务逻辑层如何捕获异常,代码如何实现?
      

  5.   


    这不更简单了吗?你只要判断返回值是不是大于0就行了呀
    如果select count(*) from RoomType where TypeName = @typeName  这个Count 大于0了就说明记录已经存在了啊
    就不在执行insert动作了啊
    如果是等于哪么就添加进去
      

  6.   

    数据访问层是 :select count(*) from RoomType where TypeName = @typeName 
    问题是在业务逻辑层如何捕获异常,代码如何实现? 用一个int型变量接收count,
    在业务层写一个方法:public bool insertCommand()
    {
        if(count>0)
        {
            return false;
        }
        else
        {
            调用数据访问层插入方法
             return true;
        }
    }然后在表示层,也就是页面上调用业务层insertCommand(),
    返回true说明没有重复,正常插入了,false就是有重复呗
      

  7.   

    1. 首先查询数据库中是否有TypeName相同的记录
    select count(*) from RoomType where TypeName = @typeName 
    2.根据得到的count数目,判断是否应该插入
       if(count>0)
        {
            if(count>1)//因为typeName 不是主键,可能里面有人为脏数据
            {提示信息:数据库中有脏数据}
            提示信息:数据库里已有重复数据
        }
        else
        {
            插入
        }