2015-08-04 4 views
-6

Я хочу сменить пароль, который был сохранен в db, но моя доза кода не работает. что не так? Я всегда вижу последнее сообщение:Почему мой пароль не изменен?

unable to connect database

public partial class pws : System.Web.UI.Page 
{ 
    static string strcon = (System.Web.Configuration.WebConfigurationManager.ConnectionStrings["strcon"].ConnectionString); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
    private void ShowPopUpMsg(string msg) 
    { 
     StringBuilder sb = new StringBuilder(); 
     sb.Append("alert('"); 
     sb.Append(msg.Replace("\n", "\\n").Replace("\r", "").Replace("'", "\\'")); 
     sb.Append("');"); 
     ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "showalert", sb.ToString(), true); 
    } 
    protected void btnInsert_Click(object sender, EventArgs e) 
    { 
     try { 
      SqlConnection db = new SqlConnection(strcon); 
      db.Open(); 
      string strId = string.Empty; 
      string strusername = string.Empty; 
      string OLdpassword = string.Empty; 
      SqlCommand cmd; 
      cmd = new SqlCommand("SELECT * FROM login WHERE login_username [email protected]_username ", db); 
      cmd.Parameters.AddWithValue("login_username", txtOldUsername.Text); 
      cmd.ExecuteNonQuery(); 
      cmd.Parameters.Clear(); 
      cmd.Dispose(); 
      cmd = null; 
      db.Close(); 
      db.Open(); 
      SqlDataReader DR; 
      DR = cmd.ExecuteReader(); 
      if (DR.Read()) 
      { 
       strId = DR["login_id"].ToString(); 
       strusername = DR["login_username"].ToString(); 
       OLdpassword = DR["login_Password"].ToString(); 
      } 
      db.Close(); 
      if (OLdpassword == txtOldPass.Text) 
      { 
       db.Open(); 
       string Command = "Update login Set login_Password= @login_Password WHERE [email protected]_username"; 
       SqlCommand cmdIns = new SqlCommand(Command, db); 
       cmdIns.Parameters.AddWithValue("@login_Password ", txtNewPass.Text); 
       cmdIns.Parameters.AddWithValue("@login_username ", txtOldUsername.Text); 
       cmdIns.ExecuteNonQuery(); 
       cmdIns.Parameters.Clear(); 
       cmdIns.Dispose(); 
       cmdIns = null; 
       db.Close(); 
       ShowPopUpMsg("successful"); 
      } 
      else 
      { 
       ShowPopUpMsg(" old pass is not correct"); 
      } 
     } 
     catch 
     { 
      ShowPopUpMsg("unable to connect database");    
     } 
    } 
} 
+1

Похоже, что в вашем блоке try есть исключение. Проверьте StackTrace и исправьте это исключение. – Karthik

+0

Сообщение об ошибке может вводить в заблуждение (вероятность довольно высокая). Попробуйте отлаживать приложение (F5 должен работать в вашем случае), поставить точку останова непосредственно за «try» и посмотреть, какая строка ДЕЙСТВИТЕЛЬНО вызывает проблему. Если вы не можете отладить код: удалите try/catch для тестирования, чтобы получить строку (и реальную ошибку) –

+2

«что не так» - как мы должны знать? Вы получаете все исключения, * игнорируя * содержащиеся в них данные и просто заменяя неопределенное сообщение об ошибке. –

ответ

1

эта часть:

cmd.ExecuteNonQuery(); 
cmd.Parameters.Clear(); 
cmd.Dispose(); 
cmd = null; 
db.Close(); 
db.Open(); 
SqlDataReader DR; 
DR = cmd.ExecuteReader(); 

почему вы выполнить не запрос, который является запрос (SELECT * FROM ...)? Почему вы размещаете объект SqlCommand cmd и почему вы его повторно используете после утилизации? Почему вы закрываете и открываете лини?

Я бы переписать эти линии так:

SqlDataReader DR = cmd.ExecuteReader(); 

Я рекомендую с помощью заявления или закрытия соединения в финальном блоке:

SqlConnection db = new SqlConnection(strcon); 
try{ 
    db.Open(); 
    //.... the rest 
} 
catch(Exception ex) 
{ 
    ShowPopUpMsg("unable to connect database: " + ex.Message); 
} 
finally 
{ 
    db.Close(); 
} 

и другое: я бы использовать первичный ключ в инструкции обновления. where id = login_id вместо имени пользователя. если имя пользователя не установлено в «unique»

+0

verrrrry tanx к вашему answer.it действительно помогла мне ..... –

0
  1. Проверить, если вы можете подключиться к базе данных с использованием учетных данных и средства управления базами данных (я предполагаю, что вы использовать MS SQL Server поэтому используйте MS SQL Server Management Studio)

  2. Проверьте правильность формата вашей строки подключения. Вы можете использовать этот сайт http://www.connectionstrings.com/, чтобы сделать это.

Надеюсь, это поможет вам.

0

Пробуйте выполнить код и найти, где происходит исключение, и посмотреть сведения об исключении.

Я предполагаю, что с вами что-то не так связано с строкой соединения (strcon).

Смежные вопросы