.Net - 我想比较TextBox中的值和数据库值

时间:2015-02-23 16:15:05

标签: c# sql .net validation

我有这个InsertItemTemplate插入,在我的情况下,诊断(葡萄牙语中的“diagnósticos”,你可以看到)。

<InsertItemTemplate>
        <asp:HiddenField ID="DiagnosticoID" Value='<%# Eval("Diagnostico_ID") %>' runat="server" />
        <asp:TextBox ID="DiagnosticoNome"  MaxLength="20" Text='<%# Bind("Diagnostico_Nome") %>' runat="server" />
       <!--OTHER VALIDATORS HERE-->
        <asp:CustomValidator
            ErrorMessage="Esse Diagnóstico já existe!!!"
            ControlToValidate="DiagnosticoNome"
            OnServerValidate="MesmoDiagnostico_ServerValidate"
            Display="Dynamic"
            ForeColor="#FF000" runat="server" />
        <asp:Button ID="Adicionar" runat="server" Text="Adicionar" CommandName="Insert" />
        <asp:Button ID="Cancelar" runat="server" Text="Cancelar" CommandName="Cancel" />
     </InsertItemTemplate>

因此,我创建了一个CustomValidator,因为我想检查数据库中是否已存在诊断名称。我搜索了如何在C#上使用SqlConnection,但仍然无法做到。我打算做的是选择我所拥有的诊断的所有名称,并与我想要插入的诊断进行比较。如果它已经存在,则出现错误,否则一切正常!

现在,我有这个:

 protected void MesmoDiagnostico_ServerValidate(object source, ServerValidateEventArgs args)
    {
        SqlConnection db = new SqlConnection("Data Source=localhost;");
        db.Open();
        SqlCommand cmd = new SqlCommand("Select Diagnostico_Nome from Diagnosticos", db);


    } 

感谢您的帮助! :P

1 个答案:

答案 0 :(得分:0)

在Sql语句中使用COUNT(*)和Where子句。

类似的东西(假设source是您要比较的文本?),

SqlCommand cmd = new SqlCommand("Select COUNT(*) from Diagnosticos Where Diagnostico_Nome=@Diagnostico_Nome", db);
cmd.Parameters.AddWithValue("@Diagnostico_Nome", (string)source);
var count = (int)cmd.ExecuteScalar();

if (count > 0)
    // This exists in the DB   

我还建议使用块包装SqlConnection和SqlCommand。