Valoriser une requête en libellé en C #

Comment puis-je prendre la valeur du résultat de la requête à l’étiquette?

J’ai deux labels, un labelName et un autre labelDepartment

Alors, quand je lance la requête, comment puis-je obtenir une valeur du résultat de la requête et l’affecter à une étiquette à l’aide de c #?

Voici ma commande SQL:

"SELECT tbl_staff.staffName,tbl_department.department FROM tbl_staff,tbl_logs,tbl_department WHERE tbl_staff.userID = tbl_logs." + listStaff.SelectedValue + " and tbl_staff.idDepartment = tbl_department.idDepartment;" 

C’est le code actuel en C #

 //Open SQL connection SqlConnection openCon = new SqlConnection(connSsortingng); openCon.Open(); ssortingng SQL = ssortingng.Format("SELECT tbl_staff.staffName,tbl_department.department FROM tbl_staff,tbl_logs,tbl_department WHERE tbl_staff.userID = tbl_logs.userID and tbl_staff.idDepartment = tbl_department.idDepartment" + listStaff.SelectedValue + ";"); SqlCommand command = new SqlCommand(SQL); SqlDataReader reader = command.ExecuteReader(); while(reader.Read()) { labelName.Text = reader["tbl_staff.staffName"]; labelDepartment.Text = reader["tbl_department.department"]; } 

Remarque: notre enregistrement ne renverra qu’une ligne .. MS SQL et C # .. merci de votre aide …;)

  ssortingng name = null; ssortingng department = null; ssortingng listStaff = "MylistStaff"; ssortingng sql = "SELECT tbl_staff.staffName,tbl_department.department " + "FROM tbl_staff,tbl_logs,tbl_department " + "WHERE tbl_staff.userID = tbl_logs." + listStaff + " and tbl_staff.idDepartment = tbl_department.idDepartment;"; //change this connection ssortingng... visit www.connectionssortingngs.com ssortingng connSsortingng = "Server=localhost; Database=myDatabaseName; Trusted_Connection=Yes"; using (SqlConnection conn = new SqlConnection(connSsortingng)) { conn.Open(); using (SqlCommand command = new SqlCommand(sql,conn)) { SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { name = reader[0] as ssortingng; department = reader[1] as ssortingng; //break for single row or you can continue if you have multiple rows... break; } } conn.Close(); } 

department et listStaff peuvent ensuite être facilement appliqués à un libellé comme:

DepartmentLabel.Text = department;

vous devez lire le résultat via un SQLDataReader

 SQLCommand command = new SQLCommand("your sql ssortingng here"); SQLDataReader reader = command.executeReader(); while(reader.read()) { set your label values here with reader["cloumn"] } 

Vous pouvez lire le contenu des lignes renvoyées par la requête à l’aide de la classe DataReader . Il a des méthodes pour obtenir une valeur unique, ou vous pouvez effectuer une itération pour chaque ligne. Dites-moi combien de lignes votre requête renvoie afin que je puisse fournir le code exact.

Vérifiez celui-ci – Définissez également votre chaîne de connexion avec ce code

 SQLCommand command = new SQLCommand(); command.CommandText = " SELECT tbl_staff.staffName,tbl_department.department FROM tbl_staff,tbl_logs,tbl_department WHERE tbl_staff.userID = tbl_logs." + listStaff.SelectedValue + " and tbl_staff.idDepartment = tbl_department.idDepartment "; SQLDataReader reader = command.executeReader(); while(reader.read()) { labelName.Text = reader.GetSsortingng(0); labelDepartment.Text = reader.GetSsortingng(1); } 
 //Open SQL connection SqlConnection openCon = new SqlConnection(connSsortingng); openCon.Open(); ssortingng SQL = ssortingng.Format("SELECT tbl_staff.staffName,tbl_department.department FROM tbl_staff,tbl_logs,tbl_department WHERE tbl_staff.userID = tbl_logs.userID and tbl_staff.idDepartment = tbl_department.idDepartment" + listStaff.SelectedValue + ";"); SqlCommand command = new SqlCommand(SQL); SqlDataReader reader = command.ExecuteReader(); while(reader.Read()) { labelName.Text = reader["tbl_staff.staffName"].ToSsortingng(); labelDepartment.Text = reader["tbl_department.department"].ToSsortingng(); } 

Le type de conversion correspond à ce que vous avez laissé dans votre code ….

Essayez de ne changer que cela

 SqlConnection openCon = new SqlConnection(connSsortingng); openCon.Open(); ssortingng SQL = ssortingng.Format("SELECT tbl_staff.staffName,tbl_department.department FROM tbl_staff,tbl_logs,tbl_department WHERE tbl_staff.userID = tbl_logs.userID and tbl_staff.idDepartment = tbl_department.idDepartment" + listStaff.SelectedValue + ";"); SqlCommand command = new SqlCommand(SQL); SqlDataReader reader = command.ExecuteReader(); while(reader.Read()) { labelName.Text = reader["tbl_staff.staffName"].toSsortingng(); labelDepartment.Text = reader["tbl_department.department"].toSsortingng(); }` 

Une façon de faire:

 private void getData() { DataTable dt = new DataTable(); SqlConnection connection = new SqlConnection("YOUR CONNECTION STRING HERE"); connection.Open(); SqlCommand sqlCmd = new SqlCommand(" SELECT tbl_staff.staffName,tbl_department.department FROM tbl_staff,tbl_logs,tbl_department WHERE tbl_staff.userID = tbl_logs." + listStaff.SelectedValue + " and tbl_staff.idDepartment = tbl_department.idDepartment", connection); SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd); sqlCmd.Parameters.AddWithValue("@username",user); sqlDa.Fill(dt); if (dt.Rows.Count > 0) { lable.Text = dt.Rows[0]["staffName"].ToSsortingng(); //Where "staffName" is ColumnName } connection.Close(); } 

Suggérez d’utiliser une procédure stockée non dans la requête en ligne pour éviter les attaques par injection SQL.

exemple de procédure stockée

Remplissez le jeu de données avec votre requête, puis récupérez les valeurs du jeu de données et affectez-le à votre étiquette.

Disons que votre jeu de données est DS:

 labelName.Text=DS.Tables[0]["tbl_staff.staffName"].tossortingng(); labelDepartment.Text=DS.Tables[0]["tbl_department.department"].tossortingng(); 

J’espère que cela t’aides.