为什么我的密码没有改变?

时间:2015-08-04 10:41:25

标签: c# asp.net

我想更改保存在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 =@login_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 login_username=@login_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");               
        }
    }
}

3 个答案:

答案 0 :(得分:1)

这一部分:

<DataGrid>
    <DataGrid.RowStyle>
        <Style TargetType="DataGridRow">
            <Setter Property="Background" Value="Transparent" />
        </Style>
    </DataGrid.RowStyle>
</DataGrid>

为什么要执行非查询,这是一个查询(select * from ...)? 为什么要处理SqlCommand对象cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); cmd.Dispose(); cmd = null; db.Close(); db.Open(); SqlDataReader DR; DR = cmd.ExecuteReader(); ,为什么在处理后重用它? 为什么你关闭并打开下面的一行?

我会改写这样的行:

cmd

我会建议使用using语句或在finally块中关闭连接:

SqlDataReader DR = cmd.ExecuteReader();

另一件事:我会在update语句中使用主键。 SqlConnection db = new SqlConnection(strcon); try{ db.Open(); //.... the rest } catch(Exception ex) { ShowPopUpMsg("unable to connect database: " + ex.Message); } finally { db.Close(); } 而不是用户名。除非用户名设置为“唯一”

答案 1 :(得分:0)

  1. 检查您是否可以使用凭据和数据库管理工具连接到数据库(我假设您使用的是MS SQL Server,因此请使用MS SQL Server Management Studio)

  2. 检查连接字符串的格式是否正确。您可以使用此网站http://www.connectionstrings.com/来执行此操作。

  3. 我希望这会对你有所帮助。

答案 2 :(得分:0)

尝试单步执行代码并找到异常发生的位置,并查看异常的详细信息。

我的猜测是连接字符串(strcon)有问题。