public void tianjia(object sender,EventArgs E)
{
string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source=";
strConnection+=Server.MapPath("1.mdb");OleDbConnection objConnection=new OleDbConnection (strConnection);
String see="update DS_ProductInf set Amonut=[@ceshu] WHERE Productnumber=[@bh]";
OleDbCommand obj1 = new OleDbCommand(see,objConnection);obj1.Parameters.Add(new OleDbParameter("@bh",OleDbType.Char,40));
obj1.Parameters["@bh"].Value=bianhao.Text;obj1.Parameters.Add(new OleDbParameter("@ceshu",OleDbType.Char,40));
obj1.Parameters["@ceshu"].Value=zceshu.Text;obj1.Connection.Open();
obj1.ExecuteNonQuery();
obj1.Connection.Close();
}代码为上面代码。
调用tianjia以后,一直出错,请问下各位高手。这个错误是怎么回事?
出现以下错误:至少一个参数没有被指定值。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.Data.OleDb.OleDbException: 至少一个参数没有被指定值。
源错误: 
行 62: 
行 63: obj1.Connection.Open();
行 64: obj1.ExecuteNonQuery();
行 65: obj1.Connection.Close();
行 66: }
 

解决方案 »

  1.   

    按sql顺序生命参数String see="update DS_ProductInf set Amonut=@ceshu WHERE Productnumber=@bh";
    OleDbCommand obj1 = new OleDbCommand(see,objConnection);obj1.Parameters.Add(new OleDbParameter("@ceshu",OleDbType.Char,40));
    obj1.Parameters["@ceshu"].Value=zceshu.Text;obj1.Parameters.Add(new OleDbParameter("@bh",OleDbType.Char,40));
    obj1.Parameters["@bh"].Value=bianhao.Text;
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  2.   

    按sql顺序生命参数 生命=》声明 晕倒~。
      

  3.   

    tryString see="update DS_ProductInf set Amonut=@ceshu WHERE Productnumber=@bh";
      

  4.   

    Access??
    参数 按sql语句顺序声明
      

  5.   

    String see="update DS_ProductInf set Amonut=[@ceshu] WHERE Productnumber=[@bh]";String see="update DS_ProductInf set Amonut=@ceshu WHERE Productnumber=@bh";
      

  6.   

    上面方案全部测试过。
    去除[]和调换顺序。
    都报同样错误。经过测试发现:
    String  see=  "update  DS_ProductInf  set  Amonut=[@ceshu]  WHERE  Productnumber=[@bh]";  String  see=  "update  DS_ProductInf  set  Amonut=@ceshu  WHERE  Productnumber=@bh";
    是一样的。
    我在其他查询语句当中添加与删除[]都一样的效果。
      

  7.   

    堆栈跟踪: [OleDbException (0x80040e10): 至少一个参数没有被指定值。]
       System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
       System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
       System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92
       System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
       System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
       System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +66
       ASP.jinhuo_aspx.tianjia(Object sender, EventArgs E) in E:\xin\admin\jinhuo.aspx:64
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
       System.Web.UI.Page.ProcessRequestMain() +1247
      

  8.   

    字段类型看看 OleDbType.Char
      

  9.   

    参数顺序应该是没有问题的,监视ExexcuteNonQuery()语句,看看参数数量时候正确
      

  10.   

    zceshu.Text和bianhao.Text里面都是纯数字.
    设置OleDbType.Char应该没问题啊.
    也就是说这里赋值应该是没问题的.如果是字符形与数据库里面字符不想符合.那么就会应该显示成插入字段之类的错误.
    而这里显示的是:至少一个参数没有被指定值.
    在中间参数传输出错了?
    因为这些代码是在Dreamweaever中写的.
    不是在.net写的.所以无法监视.就算可以.我也不会.特请教.........
      

  11.   

    这样看看
    String see="update DS_ProductInf set Amonut=? WHERE Productnumber=?";