2009-12-28 16 views
0

J'ai un formulaire qui sélectionne un groupe de lignes d'une table dans mon serveur MSSQL, maintenant, ce formulaire est utilisé pour mettre à jour les données, ce qu'il fait correctement, après avoir mis à jour les données en utilisant le forme cependant, il redirige vers une page avec une grille de données de toutes les lignes dans cette table, et me permet de sélectionner une autre ligne à mettre à jour, si je sélectionne la ligne que je viens de mettre à jour, je suis accueilli avec 'slehan_ticketadmin'. "La connexion a échoué pour l'utilisateur 'username'

Maintenant, je sais que le nom d'utilisateur/mot de passe sont corrects, parce que j'ai utilisé le formulaire il y a une minute afin de mettre à jour les données. Je ne peux pas voir les journaux d'erreurs SQL parce que mon hôte me limite, mais voici mon code derrière pour le formulaire de mise à jour.

namespace YakStudios_Support.ys_admin 
{ 
    public partial class UpdateTicket : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       int ticketID = Convert.ToInt32(Request.QueryString["ticketID"]); // Grabs the ?ticketid number from the URL 
       Ticket ticketBeingUpdated = TicketDatabase.selectTicketFromDatabase(sqlErrorLabel, ticketID); // Creates a new Ticket object to be used by the form to populate the text boxes 

       /* Form Field Population */ 
       // Email 
       emailTxt.Text = ticketBeingUpdated.getEmail(); 

       // Date Submitted 
       dateSubText.Text = ticketBeingUpdated.getDateSubmitted().ToString(); 

       // Ticket Class 
       classDropDown.SelectedValue = ticketBeingUpdated.getTicketClass(); 

       // Ticket Status 
       statusDrop.SelectedValue = ticketBeingUpdated.getStatus(); 

       // Subject 
       subjectTxt.Text = ticketBeingUpdated.getSubject(); 

       // Text 
       textTxt.Text = ticketBeingUpdated.getTicketContent(); 
      } 
     } 

     protected void editBtn_Click(object sender, EventArgs e) 
     { 
      emailTxt.Enabled = true; 
      dateSubText.Enabled = true; 
      classDropDown.Enabled = true; 
      statusDrop.Enabled = true; 
      subjectTxt.Enabled = true; 
      textTxt.Enabled = true; 
     } 

     protected void submitBtn_Click(object sender, EventArgs e) 
     { 
      int ticketID = Convert.ToInt32(Request.QueryString["ticketID"]); // Grabs the ?ticketid number from the URL 
      DateTime convertedDate = Convert.ToDateTime(dateSubText.Text); 
      Ticket ticketUpdated = new Ticket(emailTxt.Text, convertedDate, subjectTxt.Text, textTxt.Text, statusDrop.SelectedValue, classDropDown.SelectedValue); 
      TicketDatabase.updateTicketInDatabase(ticketUpdated, sqlErrorLabel, ticketID); 
      Response.Redirect("ticketqueue.aspx"); 
     } 
    } 
} 

La classe de billets que vous voyez, est juste une classe qui contient les données pour les billets qui sont mis à jour/sélectionnés/supprimés du serveur SQL, il est juste un moyen facile pour moi de modifier/données de maintien dans un manière structurée. Je veux attirer votre attention sur la ligne:

Ticket ticketBeingUpdated = TicketDatabase.selectTicketFromDatabase(sqlErrorLabel, ticketID); 

J'ai une autre classe appelée TicketDatabase qui a un tas de méthodes qui insèrent/select/mise à jour/supprimer des billets à partir de la base de données. Voici le stub de la méthode selectTicketFromDatabase().

 public static Ticket selectTicketFromDatabase(Label sqlErrorLabel, int ticketID) 
    { 
     SqlCommand sqlCmd = new SqlCommand("SELECT * from yak_tickets"); 

     using (SqlConnection selSqlConn = new SqlConnection(sqlConn.ConnectionString)) 
     //using (sqlConn) 
     { 
      sqlCmd.Connection = selSqlConn; 
      selSqlConn.Open(); // Open the SQL connection 
      //sqlCmd.Connection = sqlConn; 
      //sqlConn.Open(); // Open the SQL Connection 

      SqlDataReader reader = sqlCmd.ExecuteReader(); 
      Ticket ticketReturning = null; // Initializes the ticketReturning but it's not allocated 

      // Call during reading 
      while (reader.Read()) 
      { 
       /* Objects to hold values from reader */ 
       string emailString = reader["email"].ToString(); 
       DateTime dateSubbed = Convert.ToDateTime(reader["dateSubmitted"].ToString()); 
       string subjectString = reader["subject"].ToString(); 
       string textString = reader["ticketText"].ToString(); 
       string statusString = reader["statusid"].ToString(); 
       string classString = reader["ticketClass"].ToString(); 

       ticketReturning = new Ticket(emailString, dateSubbed, subjectString, textString, statusString, classString); 
      } 
      selSqlConn.Close(); 
      return ticketReturning; 
     } 
    } 

Je vais tester cela sur un serveur localhost pour voir si elle est le serveur ou mon code provoquant l'erreur, mais je suis toujours ouvert aux suggestions/soutien à cette question.

Merci d'avance!

+0

Question kooky aléatoire - est-ce dans Chrome ou un navigateur? J'ai remarqué que Chrome a des comportements étranges dans certaines circonstances concernant les informations d'identification ... – Will

+0

Je l'ai essayé dans Internet Explorer et Safari, même résultat sur les deux. – skylerl

Répondre

2

Cela ressemble à une erreur associée à une connexion SQL (non liée à l'authentification Windows).

Ouvrez SSMS, essayez d'ouvrir une fenêtre de requête avec:

  • "Authentification SQL Server"
  • Connexion = "de slehan_ticketadmin"
  • Password = ce que vous attendez le mot de passe soit.

Échec?

Si oui, voici quelques options (après la connexion d'une autre manière):

  • lock-out (vérifier slehan_ticketadmin sécurité/nœud Utilisateurs en SSMS)
  • n'existe pas (voir ci-dessus)
  • le mot de passe a changé/est faux (modifiez-le dans le nœud Sécurité/Utilisateurs)
  • La base de données par défaut est différente (devrait vous indiquer dans le message d'erreur)
  • SQL Se RVer est réglé sur l'authentification Windows uniquement

Sinon, votre application a les informations d'identification incorrectes stockées

Modifier, après commentaire.

Dans une fenêtre de requête, cliquez avec le bouton droit de la souris, connectez, modifiez la connexion ... reconnectez-vous à la même instance SQL Server en utilisant la liste d'instructions du premier point ci-dessus.

+0

Je ne peux pas exécuter ce script, il dit qu'il n'y a pas de procédure stockée appelée Login. – skylerl

+0

@Yakkattak: Il n'y a pas de script dans ma réponse ... voir edit – gbn

+0

Ah d'accord, oui, ça me permet de me connecter. La chose étrange est, il le fait, juste après la mise à jour de la ligne, avant de le mettre à jour, cela fonctionne très bien. – skylerl