C# 文本框或代码不区分大小写
我在文本框中输入一个名称,例如“John”,并将其保存在数据库中,然后再次输入未保存的“John”。但如果我输入“john”,它会再次保存这个。。。我需要它来救约翰,反之亦然 好的,这是一个正常的文本框:C# 文本框或代码不区分大小写,c#,asp.net,sql-server,textbox,C#,Asp.net,Sql Server,Textbox,我在文本框中输入一个名称,例如“John”,并将其保存在数据库中,然后再次输入未保存的“John”。但如果我输入“john”,它会再次保存这个。。。我需要它来救约翰,反之亦然 好的,这是一个正常的文本框: <asp:TextBox ID="TextBox2" runat="server" Width="80%" BorderColor="Black" MaxLength="127"></asp:TextBox> 代码如下:
<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();
}
int k=0
SqlConnection dataConnection=新的SqlConnection();
dataConnection.ConnectionString=ConfigurationManager.ConnectionString[“ConnectionString”]。ConnectionString;
SqlCommand数据命令=
新的SqlCommand(“从组中选择名称”,dataConnection);
ArrayList name=新的ArrayList();
dataConnection.Open();
SqlDataReader rdr=dataCommand.ExecuteReader();
while(rdr.Read())
{
name.Add(rdr.GetString(0));
}
dataCommand.Dispose();
dataConnection.Dispose();
//检查名称是否已被使用。。
对于(int i=0;i
一种方法是每次在将其呈现给数据库之前将其更改为适当的大小写
要使其符合正确的情况,可以尝试System.Globalization.TextInfo
中的ToTitleCase()
方法
请注意,ToTitleCase()
提供了任意大小写行为,而不是语言正确的行为。例如,“战争与和平”在英语中应该有一个小写的a。这对于O'Brien这样的情况尤其有问题,因为ToTitleCase
将输出为O'Brien
最后,让数据库保存东西可能更容易 一种方法是每次在将其呈现给数据库之前将其更改为适当的大小写
if (Name != (string)names[i])
{
...
}
要使其符合正确的情况,可以尝试System.Globalization.TextInfo
中的ToTitleCase()
方法
请注意,ToTitleCase()
提供了任意大小写行为,而不是语言正确的行为。例如,“战争与和平”在英语中应该有一个小写的a。这对于O'Brien这样的情况尤其有问题,因为ToTitleCase
将输出为O'Brien
最后,让数据库保存东西可能更容易
if (Name != (string)names[i])
{
...
}
可能成为
if (!Name.Equals((string)names[i], StringComparison.InvariantCultureIgnoreCase))
{
...
}
可能成为
if (!Name.Equals((string)names[i], StringComparison.InvariantCultureIgnoreCase))
{
...
}
该洗个冷水澡了 首先,如果要检查名称是否存在,如果不存在则插入,则必须在服务器上进行检查,并进行适当的隔离和事务控制。除了通过检查客户机上的名称和数组的效率非常低之外,您所拥有的内容是不正确的,因为它会检查名称是否不存在(过去时)。它不考虑并发,因此两个请求可以尝试插入相同的名称。
其次,如果您需要数据库中的唯一性,那么可以通过表约束来强制执行它。如果需要不区分大小写的唯一名称,则应在“名称”列的表中添加一个,并确保该列使用不区分大小写的名称。冷水浴时间到了 首先,如果要检查名称是否存在,如果不存在则插入,则必须在服务器上进行检查,并进行适当的隔离和事务控制。除了通过检查客户机上的名称和数组的效率非常低之外,您所拥有的内容是不正确的,因为它会检查名称是否不存在(过去时)。它不考虑并发,因此两个请求可以尝试插入相同的名称。
其次,如果您需要数据库中的唯一性,那么可以通过表约束来强制执行它。如果需要不区分大小写的唯一名称,则应在“名称”列的表中添加一个,并确保该列使用不区分大小写的名称。为什么不在比较逻辑中强制使用大写(或小写): 如果(Name.ToUpper()!=(字符串)名称[i].ToUpper)
HTH为什么不在比较逻辑中强制使用大写(或小写): 如果(Name.ToUpper()!=(字符串)名称[i].ToUpper)
HTH您用于DB访问的API是什么?向我们展示您的查询和插入代码,以便我们可以建议MOD。在
InsertName()
中有什么代码?您用于DB访问的API是什么?向我们展示您的查询和插入代码,以便我们可以建议MOD。在InsertName()
中有什么代码?