我有这个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
答案 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。