问题描述
publicstaticobjectExcSqlScalar(stringsqlstr,paramsobject[]param){//System.Data.OleDb.OleDbCommandtmp=ThisConnect.CreateCommand();System.Data.SqlClient.SqlCommandtmp=ThisConnect.CreateCommand();tmp.CommandText=sqlstr;for(inti=0;i<param.Length;i++)tmp.Parameters.Add("param",param[i]);tmp.Transaction=ThisTrans;objectrtn=tmp.ExecuteScalar();tmp.Dispose();returnrtn;}publicstaticintExcSqlNonQuery(stringsqlstr,paramsobject[]param){returnExcSqlNonQuery(sqlstr,System.Data.CommandType.Text,param);}程序以前是ACCESS里,现在改为SQL的,业务类BaseDataBase里的两个方法,窗口代码里调用它们privatevoidbtnSubmit_Click(objectsender,System.EventArgse){objectpw=BaseDataBase.ExcSqlScalar("select用户名fromlogUserwhere用户名=?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("updateLogUserset密码=?where用户名=?",this.txtNewPwd1.Text,this.txtUserName.Text);MessageBox.Show("密码修改成功!");this.Close();}}}select用户名fromlogUserwhere用户名=?and密码=?",this.txtUserName.Text,this.txtOldPwd.Text是原来ACCESS的写法,现在我想换成SQL,不是说有参数的SQL语句是怎样写,而是就这个程序而言应该怎样改
解决方案
解决方案二:
求助中~~~
解决方案三:
你具体的问题是什么呢?
解决方案四:
友情顶一下
解决方案五:
现在程序里代码是select用户名fromlogUserwhere用户名=?and密码=?",this.txtUserName.Text,this.txtOldPwd.Text这种写法(连接ACCESS)的,我现在连的是SQL数据库,整个项目也要改成SQL的,现在写法不支持SQL数据库,运行报错为"?"附近有语法错误,就这个项目而言,select用户名fromlogUserwhere用户名=?and密码=?",this.txtUserName.Text,this.txtOldPwd.Text应该怎样改,不是说单纯的SQL语句怎样添加参数,而是就这个程序而言应该怎样改
解决方案六:
select用户名fromlogUserwhere用户名=@uand密码=@p",
解决方案七:
数据库我也改成SQL的了
解决方案八:
"select用户名fromlogUserwhere用户名='"+this.txtUserName.Text+"'and密码='"+this.txtOldPwd.Text+"'"
解决方案九:
也可以用5楼的传参数吧!SqlCommandcmd=newSqlCommand("select用户名fromlogUserwhere用户名=@uand密码=@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;
解决方案十:
publicstaticobjectExcSqlScalar(stringsqlstr,SqlParameter[]param){System.Data.SqlClient.SqlCommandtmp=ThisConnect.CreateCommand();tmp.CommandText=sqlstr;if(param.Length!=0){foreach(SqlParameterpinparam)tmp.Parameters.Add(p);}tmp.Transaction=ThisTrans;objectrtn=tmp.ExecuteScalar();tmp.Dispose();returnrtn;}SqlParameter[]param=newSqlParameter[2];param[0]=newSqlParameter("@Name",this.txtUserName.Text);param[1]=newSqlParameter("@Pwd",this.txtOldPwd.Text);objectpw=BaseDataBase.ExcSqlScalar("select用户名fromlogUserwhere用户名=@Nameand密码=@Pwd",param);
解决方案十一:
select用户名fromlogUserwhere用户名=?and密码=?",this.txtUserName.Text,this.txtOldPwd.Text========用string的format格式化一下:String.Format(select用户名fromlogUserwhere用户名={0}and密码={1}",this.txtUserName.Text,this.txtOldPwd.Text)试试看,
解决方案十二:
引用8楼Guyschaos的回复:
SqlCommandcmd=newSqlCommand("select用户名fromlogUserwhere用户名=@uand密码=@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楼的传参数吧!SqlCommandcmd=newSqlCommand("select用户名fromlogUserwhere用户名=@uand密码=@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;