当前位置:编程学习 > C#/ASP.NET >>

ACCESS的项目转成SQL项目出现问题

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
{
BaseDataBase.ExcSqlNonQuery("update LogUser set 密码=? where 用户名=?",this.txtNewPwd1.Text,this.txtUserName.Text);
MessageBox.Show("密码修改成功!");
this.Close();
}
}
}
像这种写法update LogUser set 密码=? where 用户名=?",this.txtNewPwd1.Text,this.txtUserName.Text,用?添加参数,是在连接ACCESS数据库的编码方式,现在连接SQL数据库运行就报错,请问各位怎样能改成SQL的用"@"添加参数方法, --------------------编程问答-------------------- string.Fromat("select 用户名 from logUser where 用户名={0} and 密码={1}",this.txtUserName.Text,this.txtOldPwd.Text) --------------------编程问答-------------------- 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);
--------------------编程问答--------------------
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(); 



--------------------编程问答-------------------- 晕,该了下面上面没改 
类似。
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); 
--------------------编程问答-------------------- 原来程序运行修改密码功能,报错如下,程序显示变量名'@param'已声明,变量名在查询批次或存储过程内部必须唯一,'?'附近有语法错误.
用第一种做法string.Fromat("select 用户名 from logUser where 用户名={0} and 密码=

{1}",this.txtUserName.Text,this.txtOldPwd.Text)运行报错为程序显示变量名'@param'已声明,变量名在查询批

次或存储过程内部必须唯一,'0附近有语法错误,第2种做法参数名我在ExcSqlScalar里声明了 tmp,怎样在窗口代码里给

ExcSqlScalar里的tmp添加,而不是在页面里直接添加参数
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,