문제

TextBox 예를 들어 이름을 입력합니다. "John"과 데이터베이스에 저장 한 다음 다시 저장하지 않는 "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))
{
    ...
}

다른 팁

이를 수행하는 한 가지 방법은 데이터베이스에 제시하기 전에 매번 적절한 케이스로 변경하는 것입니다.

적절한 케이스를 얻으려면 ToTitleCase() 방법 System.Globalization.TextInfo.

주목하십시오 ToTitleCase() 언어 적으로 올바른 행동이 아니라 임의의 케이스 행동을 제공합니다. 예를 들어 "전쟁과 평화"는 영어로 된 소문자 A가 있어야합니다. 이것은 오브라이언과 같은 경우에 특히 문제가됩니다. ToTitleCase 오브라이언으로 출력 할 것입니다.

결국, 데이터베이스가 물건을 저장하도록하는 것이 더 쉬울 수 있습니다.

차가운 샤워 시간.

먼저, 이름이 존재하는지 확인하고 적절한 격리 및 트랜잭션 제어하에 서버를 확인 해야하는 경우 삽입하려면 서버를 확인해야합니다. 이름을 확인하여 끔찍하게 비효율적 인 것 외에도 고객, 이름이 없는지 확인하기 때문에 틀 렸습니다. 존재했다 (과거형). 동시성을 고려하지 않으며 결과적으로 두 요청이 동일한 이름을 삽입하려고 시도 할 수 있습니다.

둘째, 데이터베이스에서 독창성이 필요한 경우 테이블 제약으로 시행됩니다. 당신은 케이스의 무감각 한 독특한 이름을 원합니다. 그러면 추가해야합니다. 독특한 제약 이름 열의 테이블에 열에 열이 둔감 한 케이스를 사용하는지 확인하십시오. 대조.

비교 논리에서 대문자 (또는 그 문제에 대한 소문자)를 강제로 강제로 강제하지 않는 이유는 무엇입니까?

if (name.toupper ()! = (문자열) 이름 [i] .toupper)

HTH

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top