2016-08-19 3 views
-2

Ich versuche, zwischen zwei Tabellen mit dem gleichen Primärschlüssel zu verbinden, wenn ich also eine Telefonnummer im Suchfeld eingib, wird geprüft, ob die Nummer in der anderen Tabelle existiert und wenn es so ist, bekomme ich f. Name, Name und Telefon in andere Textfelder, um die Kundeninformationen einfügen, ohne alles zu tippen, aber etwas funktioniert nicht in meinem Code, es überspringt den Code innerhalb der "während"Wie Informationen aus einer Tabelle in Textfelder basierend auf Primärschlüssel aus einer anderen Tabelle abgerufen werden?

+1

Meine Telefonnummer ist ' " '; drop database DB_Name()'" do' –

+0

in Ihre while-Anweisung ändern {if (myReader.HasRows) { appo_fname.Text = (myReader [ "customers.First_name"] .ToString()); appro_lname.Text = (myReader ["customers.Last_name"]. ToString()); asso_num.Text = (myReader ["Kunden.Phone_num"]. ToString()); } } while (myReader.NextResult()); – Kami

+0

Gibt es eine Ausnahme oder nur keine Daten von der Abfrage zurückgegeben, ich denke, der Code hier ist OK, nur müssen Sie sich um SQL-Injektion kümmern. Sie können die Abfrage im sq-Managementstudio ausführen und prüfen, ob die Abfrage etwas zurückgeben kann. –

Antwort

0

Ändern Sie die folgenden Anweisungen

appo_fname.Text = (myReader["customers.First_name"].ToString()); 
appo_lname.Text = (myReader["customers.Last_name"].ToString()); 
appo_num.Text = (myReader["customers.Phone_num"].ToString()); 

in:

appo_fname.Text = (myReader["First_name"].ToString()); 
appo_lname.Text = (myReader["Last_name"].ToString()); 
appo_num.Text = (myReader["Phone_num"].ToString()); 

(Löschen Sie den Tabellennamen vor dem Spaltennamen) Außerdem ist Ihr Code anfällig für SQL-Injection, weil Sie Ihre SELECT-Anweisung mit String-Verkettung erstellen. Sie sollten die Telefonnummer als Parameter an Ihre Select-Anweisung übergeben.

Ich kann nicht sehen, wie Sie das Conn-Objekt erstellen, aber ich würde sicherstellen, dass es durch eine 'using' Anweisung getan wird.

Verwandte Themen