高分悬赏,未处理sqlexception

来源:百度知道 编辑:UC知道 时间:2024/06/05 07:57:08
sql = "select * from login_s";
string MySQL = "Select COUNT(*) From login_s Where textBox1=@s_username AND textBox2=@s_pwd";
SqlCommand MyCommand = new SqlCommand(MySQL, MyConnection);
MyCommand.Parameters.Clear();
SqlParameter MySqlNameParameter = new SqlParameter();
MySqlNameParameter.ParameterName = "@s_username";
MySqlNameParameter.Value = this.textBox1.Text;
MyCommand.Parameters.Add(MySqlNameParameter);
SqlParameter MySqlPWParameter = new SqlParameter();
MySqlPWParameter.ParameterName = "@s_pwd";
MySqlPWParameter.Value = this.textBox2.Text;
MyCommand.Parameters.Add(MySqlPWParameter);
//////////////////错误显示在这里
int MyCount = (int)MyCommand.ExecuteScalar();
////////////////////////
if (MyCount == 1)

根据我个人的经验最大的可能就是数据类型有问题,你仔细调试一下

你把代码换成这样看看:
SqlParameter MySqlNameParameter = new SqlParameter();
MySqlNameParameter.ParameterName = "@s_username";
MySqlNameParameter.Value = this.textBox1.Text.ToString().Trim();
MyCommand.Parameters.Add(MySqlNameParameter);

要给 MySqlNameParameter 加上数据类型,
MySqlNameParameter.DataType = DataType.varchar

SqlParameter MySqlNameParameter = new SqlParameter();
MySqlNameParameter.ParameterName = "@s_username";
MySqlNameParameter.Value = this.textBox1.Text;
MyCommand.Parameters.Add(MySqlNameParameter);
你把上面的代码换成下面的试试

MyCommand.Parameters.Add("@s_username",SqlDbType.VarChar).Value = this.textBox1.Text

注:如果是sql数据库,用SqlDbType,否则请用DbType

你原语句的错误在于没有定义参数的类型,而当没有定义类型时,系统默认为NVarChar,如果这种类型和你数据库中实际设置的类型有冲突,那就会产生错误了。虽然你的代码和别人的代码一样,可是数据库不一定一样啊,建议你还是设置参数类型。MySqlNameParameter.DbType=SqlDbType.VarChar;

接口不一样