题
我在文本框中输入名称,例如。 "约翰"并将其保存在它所做的数据库中,然后我再次输入“John”。它没有保存。但如果我输入“john”,它会再次保存...我需要它不能保存约翰,反之亦然。
好的,所以这是正常的文本框: <asp:TextBox ID="TextBox2" runat="server" Width="80%" BorderColor="Black"
MaxLength="127"></asp:TextBox>
这是代码:
int k= 0
SqlConnection dataConnection = new SqlConnection();
dataConnection.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlCommand dataCommand =
new SqlCommand("select Name from Groups", dataConnection);
ArrayList names = new ArrayList();
dataConnection.Open();
SqlDataReader rdr = dataCommand.ExecuteReader();
while (rdr.Read())
{
names.Add(rdr.GetString(0));
}
dataCommand.Dispose();
dataConnection.Dispose();
//to check if name already used..
for (int i = 0; i < names.count; i++)
{
if (Name != (string)names[i])
{
k = 1;
}
else
{
Label1.Text = "Name is already present";
Label1.Visible = true;
k = 0;
break;
}
}
if (k == 1)
{
Insertname();
}
解决方案
if (Name != (string)names[i])
{
...
}
可能会成为
if (!Name.Equals((string)names[i], StringComparison.InvariantCultureIgnoreCase))
{
...
}
其他提示
执行此操作的一种方法是每次将其更改为正确的大小写,然后再将其呈现给数据库。
为了使其正常,您可以在 System.Globalization.TextInfo
中尝试 ToTitleCase()
方法。
请注意, ToTitleCase()
提供了任意的套管行为,而不是语言上正确的行为。例如“战争与和平”应该用英文小写a。对于像O'Brien这样的情况尤其有问题, ToTitleCase
将输出为O'brien。
最后,让数据库保存东西可能更容易。
为什么不在比较逻辑中强制大写(或小写):
if(Name.ToUpper()!=(string)names [i] .ToUpper)
HTH
不隶属于 StackOverflow