检查用户输入表上是否已存在单元格值的组合

时间:2014-09-17 15:36:34

标签: c# sql asp.net

CI已经发现了类似的问题,但我找不到合适的答案。 我有一个C#Web表单,其中包含一个允许用户输入的表。该表有3列 - ccy1,ccy2和Rate。

当用户插入值时,他们会点击“保存”。按钮,通过"插入到表格中将输入的值插入SQL数据库..."言。

但是,我需要在点击“保存”时生成错误声明。如果满足以下条件,则按钮:       - 表中已存在ccy1和ccy2的组合

示例表:

ccy1 ccy2评分

EUR USD 1.3

GBP USD 1.7

现在,如果用户尝试添加ccy1 = EUR和ccy2 = USD的第三行,则会产生错误,因为此组合已经存在(在表的第1行)。

所以我希望我的C#代码类似于:

if (***combination of ccy1 and ccy2 already exists then***)
       { "ERROR MSG" }
       else
       {
       sql += "INSERT INTO table values (ccy1, ccy2, rate)"
       }

这是标有星星的线条,我尝试了几种方法后无法理解。

非常感谢任何帮助。

谢谢, 约翰

2 个答案:

答案 0 :(得分:0)

        declare @exists bit = 1

        if not Exist(select 1 from Table)
        begin

             @exists = 0

              insert into TABLEX (s, s, s, s, s)
              Values (@ccy1, @ccy2, @rate, etc...)


        end

        select @exists

这将返回文件是否存在,如果不存在则将其插入。

在您的代码中,您可以检查返回值,如果返回1则抛出错误。

答案 1 :(得分:0)

通常,您可以使用数据库表上的唯一约束来执行此操作。然后,尝试插入。如果列组合存在,则会出现约束违例异常。在中违反了约束(如果你的桌子上有多个<)>,这有点痛苦,但可能。

如果您需要更多控制,或者想要更好地格式化异常,您可以执行“if exists(select * from table where col1 = ... and col2 = ...)”test(如建议的那样)(但是返回结果变量或输出参数。)