Frage

ich geben Sie einen Namen in Textbox zB. „John“ und es in der Datenbank speichern, die es der Fall ist, dann gebe ich wieder „John“, die es nicht retten. Aber wenn ich „john“ eingeben, ist es diese wieder spart ... Ich brauche es nicht die john und umgekehrt zu speichern.

ok so ist dies die Textbox, die ruhig ist normal:

 <asp:TextBox ID="TextBox2" runat="server" Width="80%" BorderColor="Black" 
                    MaxLength="127"></asp:TextBox>

und hier ist der Code:

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();
            }
War es hilfreich?

Lösung

if (Name != (string)names[i])
{
    ...
}

könnte werden

if (!Name.Equals((string)names[i], StringComparison.InvariantCultureIgnoreCase))
{
    ...
}

Andere Tipps

Eine Möglichkeit, es zu tun, ist es, um ein ordnungsgemäßer Fall jedes Mal zu ändern, um es in die Datenbank vor der Vorlage.

Um es zu richtigem Fall zu erhalten, können Sie die ToTitleCase() Methode in System.Globalization.TextInfo versuchen.

Beachten Sie, dass ToTitleCase() ein beliebiges Gehäuse Verhalten liefert, keine sprachlich korrektes Verhalten. Zum Beispiel „Krieg und Frieden“ sollte einen Kleinbuchstaben a in Englisch haben. Dies ist besonders problematisch für Fälle wie O'Brien, der Wille Ausgabe als O'brien ToTitleCase.

Am Ende könnte es einfacher sein nur die Datenbank zu lassen, das Ding speichern.

Zeit für eine kalte Dusche.

Erstens, wenn Sie möchten, zu überprüfen, ob der Name es existiert und einfügen, wenn es Sie nicht auf dem Server überprüfen muss, unter dem richtigen Isolierung und Transaktionskontrolle. Was haben Sie da, neben horrend ineffizient durch den Namen auf dem Client gegenüber einem Array Überprüfung , falsch ist, weil es nicht der Fall ist, wenn der Name überprüft existierte (Vergangenheit) . Dabei spielt es keine Parallelität betrachten und als Ergebnis zwei Anfragen versuchen können, den gleichen Namen einzufügen.

Zweitens, wenn Sie in der Datenbank Einzigartigkeit müssen dann erzwingen Sie es von Tabellenbedingungen. Sie wollen einen Groß- und Kleinschreibung eindeutigen Namen, dann sollten Sie einen UNIQUE rel="nofollow auf dem Spalte Namen auf den Tisch und stellen Sie sicher, dass die Spalte ein Groß- und Kleinschreibung Sortierungs rel="nofollow .

Warum zwingen nicht nur in Großbuchstaben (oder Kleinschreibung für diese Angelegenheit) in der Vergleichslogik:

if (Name.ToUpper ()! = (String) Namen [i] .ToUpper)

HTH

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top