Ich bin zwei Tabellen - Kontakt und RetailTrainingUserLevelMap in einer Select-Anweisung."Eingabe Zeichenfolge war nicht in einem korrekten Format" bei der Verwendung von SqlDataReader und Label
(Die gemeinsame Spalte in sowohl der RetailTrainingUserLevelID int)
SELECT Contact.IntranetUserName, Contact.CompanyName, RetailTrainingUserLevelMap.RetailTrainingUserLevel
von Kontakt
INNER JOIN RetailTrainingUserLevelMap ON Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap .RetailTrainingUserLevelID
AND Kontakt.RetailTrainingUserLevelID = RetailTrainingUserLevelMap.RetailTrai ningUserLevelID
WHERE (Contact.IntranetUserName = @IntranetUserName)
Wenn ich diese Aussage durch Visual Studio Query Builder (das Testabfragefenster) ausführen und einen Wert für "IntranetUserName" eingeben erhalte ich:
IntranetUserName:
John Joe
Company:
Acme Inc.
RetailTrainingUserLevel:
-Manager
Dies ist meine gewünschte Ausgabe, so weit so gut.
Wenn ich diese gleiche select-Anweisung in meinem .cs Code-Behind ein SqlDataReader mit Etiketten dieser Spalten wie folgt Einige zu binden:
SqlCommand comm;
SqlConnection conn;
string intranetConnectionString = ConfigurationManager.ConnectionStrings["DataConnect"].ConnectionString;
conn = new SqlConnection(intranetConnectionString);
comm = new SqlCommand("SELECT Contact.IntranetUserName, Contact.CompanyName, RetailTrainingUserLevelMap.RetailTrainingUserLevel FROM Contact INNER JOIN RetailTrainingUserLevelMap ON Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap.RetailTrainingUserLevelID AND Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap.RetailTrainingUserLevelID WHERE (Contact.IntranetUserName = @IntranetUserName)", conn);
comm.Parameters.Add("@IntranetUserName", System.Data.SqlDbType.VarChar, 50);
comm.Parameters["@IntranetUserName"].Value = memberLoginName;
conn.Open();
SqlDataReader reader = comm.ExecuteReader();
while (reader.Read())
{
memberCompanyNameLabel.Text += reader["CompanyName"];
userLevelLabel.Text += reader["RetailTrainingUserLevel"];
}
reader.Close();
conn.Close();
erhalte ich die Fehler „Eingabezeichenfolge war nicht in einem korrekten Format." hier:
userLevelLabel.Text + = Leser ["RetailTrainingUserLevel"];
Was C# Syntax muss hier geändert werden, damit ich diesen Wert korrekt an meine userLevelLabel gebunden bekommen kann?
Hinweis: RetailTrainingUserLevelID int
RetailTrainingUserLevel varchar (50)
Vielen Dank für Ihre Zeit und Wissen.
Hallo Stan, Die "RetailTrainingUserLevel" gesetzt ist nicht null zu ermöglichen. Ich habe Ihren Code Vorschlag versucht und bekomme immer noch den Fehler: "Eingabe String war nicht in einem korrekten Format." at userLevelLabel.Text + = Leser ["RetailTrainingUserLevel"]. ToString(); Ich bin verwirrt darüber, warum es ein Problem gibt. Der Leser möchte einen "RetailTrainingUserLevel" -Wert, der in der Tabelle auf varchar gesetzt ist - die möglichen Werte sind Manager, Supervisor, Principal, die mir alle wie Strings erscheinen. Ich bin mir nicht sicher, was ich sonst noch versuchen sollte. Ist meine JOIN-Anweisung nicht korrekt eingerichtet? Danke für weitere Ideen, die Sie vielleicht haben ... – Doug