string.Fromat("select 用户名 from logUser where 用户名={0} and 密码={1}",this.txtUserName.Text,this.txtOldPwd.Text)

解决方案 »

  1.   

    string str="select 用户名 from logUser where 用户名=@Name and 密码=@Pwd";
     SqlParameter[] param = new SqlParameter[2];
     param[0]=new SqlParameter("@Name",this.txtUserName.Text);
     param[2]=new SqlParameter("@Pwd",this.txtOldPwd.Text);
      

  2.   

    public static object  ExcSqlScalar(string sqlstr,params object[] param) 

    //System.Data.OleDb.OleDbCommand tmp=ThisConnect.CreateCommand(); 
                System.Data.SqlClient.SqlCommand tmp = ThisConnect.CreateCommand(); 
    tmp.CommandText=sqlstr; 
              for(int i=0;i <param.Length;i++) 
                  tmp.Parameters.Add("param",param[i]); 
    tmp.Transaction=ThisTrans; 
    object rtn=tmp.ExecuteScalar(); 
    tmp.Dispose(); 
    return rtn; 

    一个业务类,以前的连接是ACCESS的,现在改成SQL的了.在设计窗体的页面里调用它的代码 
    private void btnSubmit_Click(object sender, System.EventArgs e) 

    object pw=BaseDataBase.ExcSqlScalar("select 用户名 from logUser where 用户名=? and 密码=?",this.txtUserName.Text,this.txtOldPwd.Text); 
    if(pw==null) 

    MessageBox.Show("旧密码错误!请再次输入!"); 
    this.txtOldPwd.Focus(); 
    return; 

    else 

    if(this.txtNewPwd1.Text!=this.txtNewPwd2.Text) 

    MessageBox.Show("两次输入的密码不一致!请重新输入!"); 
    this.txtNewPwd1.Text=""; 
    this.txtNewPwd2.Text=""; 
    this.txtNewPwd1.Focus(); 

    else 

    SqlParameter[] param = new SqlParameter[]{new SqlParameter("@pwd",SqlDataType.Varchar),
    new SqlParameter("@name",SqlDataType.Varchar)}; 
    param[0].Value=txtNewPwd1.Text;
    param[1].Value=this.txtUserName.Text;
    BaseDataBase.ExcSqlNonQuery("update LogUser set 密码=@pwd where 用户名=@name",param); 
    MessageBox.Show("密码修改成功!"); 
    this.Close(); 



      

  3.   

    晕,该了下面上面没改 
    类似。
    SqlParameter[] param = new SqlParameter[]{new SqlParameter("@pwd",SqlDataType.Varchar),
    new SqlParameter("@name",SqlDataType.Varchar)}; 
    param[0].Value=txtNewPwd1.Text;
    param[1].Value=this.txtUserName.Text;
    BaseDataBase.ExcSqlNonQuery("update LogUser set 密码=@pwd where 用户名=@name",param); 
      

  4.   

    原来程序运行修改密码功能,报错如下,程序显示变量名'@param'已声明,变量名在查询批次或存储过程内部必须唯一,'?'附近有语法错误.
    用第一种做法string.Fromat("select 用户名 from logUser where 用户名={0} and 密码={1}",this.txtUserName.Text,this.txtOldPwd.Text)运行报错为程序显示变量名'@param'已声明,变量名在查询批次或存储过程内部必须唯一,'0附近有语法错误,第2种做法参数名我在ExcSqlScalar里声明了 tmp,怎样在窗口代码里给ExcSqlScalar里的tmp添加,而不是在页面里直接添加参数