表是这样的有 id 和password字段  文本框一存放的是要输入id字段的值 文本框二存放的是要输入password的值
当输入的id和password提示  成功  但 我这样写  他只能执行一次成功  下次输入id 和password  他不能正确的提示了 access数据库
 try
            {
                
                oleDbConnection1.Open();
                oleDbCommand1.CommandText = "SELECT  COUNT(*)  FROM tab_1 WHERE (id=@type1) AND (password=@type2)";
                //参数声明type1
                OleDbParameter prmtype = new OleDbParameter();                prmtype.ParameterName = "@type1";
                prmtype.OleDbType = OleDbType.VarChar;                prmtype.Value = textBox1.Text;                oleDbCommand1.Parameters.Add(prmtype);                //参数声明type2                OleDbParameter par2 = new OleDbParameter();                par2.ParameterName = "@type2";
                par2.OleDbType = OleDbType.VarChar;
                par2.Value = textBox2.Text;                oleDbCommand1.Parameters.Add(par2);                string result = Convert.ToString(oleDbCommand1.ExecuteScalar());//统计符合条件的记录只有1和0两种情况                MessageBox.Show(result);                if (result == "1")
                {
                    
                    MessageBox.Show("登陆成功", "提示");                }                else
                {
                    MessageBox.Show("登陆失败", "提示");                }                oleDbConnection1.Close();
            }            catch(OleDbException ex)
            {
                MessageBox.Show(ex.Message);            }

解决方案 »

  1.   


    在这加一句代码试试oleDbCommand1.CommandText = "SELECT  COUNT(*)  FROM tab_1 WHERE (id=@type1) AND (password=@type2)"; oleDbCommand1.Parameters.Clear();//清空参数
      

  2.   

    第二次点的时候oleDbCommand1里面的参数就是4个了
      

  3.   

    @type1换成:type1试试
    oracle参数不是@
      

  4.   

    prmtype.ParameterName = "@type1";
    par2.ParameterName = "@type2"; 
    是不是可以把@去掉?试试应该一样运行。
    你得跟一下程序,看看第二次跟第一次哪不一样了。
      

  5.   

    是的,Oracle的参数不是 @还有执行之前添加一个清除参数的方法,你最好再看一下,是不是有抛异常了