当前位置:编程学习 > 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;
}
public static int ExcSqlNonQuery(string sqlstr,params object[] param)
{
return ExcSqlNonQuery(sqlstr,System.Data.CommandType.Text,param);
}
程序以前是ACCESS里,现在改为SQL的,业务类BaseDataBase里的两个方法,窗口代码里调用它们
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();
}
}
}
select 用户名 from logUser where 用户名=? and 密码=?",this.txtUserName.Text,this.txtOldPwd.Text是原来ACCESS的写法,现在我想换成SQL,不是说有参数的SQL语句是怎样写,而是就这个程序而言应该怎样改 --------------------编程问答-------------------- 求助中~~~ --------------------编程问答-------------------- 你具体的问题是什么呢?

--------------------编程问答-------------------- 友情顶一下 --------------------编程问答-------------------- 现在程序里代码是select 用户名 from logUser where 用户名=? and 密码=?",this.txtUserName.Text,this.txtOldPwd.Text这种写法(连接ACCESS)的,我现在连的是SQL数据库,整个项目也要改成SQL的,现在写法不支持SQL数据库,运行报错为"?"附近有语法错误,就这个项目而言,select 用户名 from logUser where 用户名=? and 密码=?",this.txtUserName.Text,this.txtOldPwd.Text应该怎样改,不是说单纯的SQL语句怎样添加参数,而是就这个程序而言应该怎样改 --------------------编程问答-------------------- select 用户名 from logUser where 用户名=@u and 密码=@p", --------------------编程问答-------------------- 数据库我也改成SQL的了 --------------------编程问答-------------------- "select 用户名 from logUser where 用户名='"+this.txtUserName.Text+"' and 密码='"+this.txtOldPwd.Text+"'" --------------------编程问答-------------------- 也可以用5楼的传参数吧!
SqlCommand cmd = new SqlCommand("select 用户名 from logUser where 用户名=@u and 密码=@p",conn);
cmd.Parameters.Add("@u", SqlDbType.你要的数据类型);//注意可能会需要转换下的
cmd.Parameters["@U"].Value =this.txtUserName.Text ;
cmd.Parameters.Add("@p", SqlDbType.你要的数据类型);
cmd.Parameters["@p"].Value =this.txtOldPwd.Text; --------------------编程问答-------------------- public static object  ExcSqlScalar(string sqlstr, SqlParameter[] param)
{

System.Data.SqlClient.SqlCommand tmp = ThisConnect.CreateCommand();
tmp.CommandText=sqlstr;
 if (param.Length != 0)
 {
       foreach (SqlParameterp in param)
              tmp.Parameters.Add(p);
}
tmp.Transaction=ThisTrans;
object rtn=tmp.ExecuteScalar();
tmp.Dispose();
return rtn;
}

  SqlParameter[] param = new SqlParameter[2];
  param[0]=new SqlParameter("@Name",this.txtUserName.Text);
  param[1]=new SqlParameter("@Pwd",this.txtOldPwd.Text);
object pw=BaseDataBase.ExcSqlScalar("select 用户名 from logUser where 用户名=@Name and 密码=@Pwd",param );
--------------------编程问答-------------------- select 用户名 from logUser where 用户名=? and 密码=?",this.txtUserName.Text,this.txtOldPwd.Text

========
用string的format格式化一下:
String.Format(select 用户名 from logUser where 用户名={0} and 密码={1}"
,this.txtUserName.Text,this.txtOldPwd.Text)
试试看, --------------------编程问答--------------------
引用 8 楼 Guyschaos 的回复:
 
SqlCommand cmd = new SqlCommand("select 用户名 from logUser where 用户名=@u and 密码=@p",conn); 
cmd.Parameters.Add("@u", SqlDbType.你要的数据类型);//注意可能会需要转换下的 
cmd.Parameters["@U"].Value =this.txtUserName.Text ; 
cmd.Parameters.Add("@p", SqlDbType.你要的数据类型); 
cmd.Parameters["@p"].Value =this.txtOldPwd.Text;


这样就能实现。。 --------------------编程问答--------------------
引用 8 楼 Guyschaos 的回复:
也可以用5楼的传参数吧! 
SqlCommand cmd = new SqlCommand("select 用户名 from logUser where 用户名=@u and 密码=@p",conn); 
cmd.Parameters.Add("@u", SqlDbType.你要的数据类型);//注意可能会需要转换下的 
cmd.Parameters["@U"].Value =this.txtUserName.Text ; 
cmd.Parameters.Add("@p", SqlDbType.你要的数据类型); 
cmd.Parameters["@p"].Value =this.txtOldPwd.Text;
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,