OleDbParameter名称一般用的是“?”,我指定具体的名称,如@ID,@Name然后我用的时候,只用了一个,如insert into table (name) values(@Name),结果他会取@ID的值难道他是按“位置”取的值???是匹配位置的,不是匹配我具体指定的值??

解决方案 »

  1.   

    access貌似是那样
    把位置调整一下就可以
      

  2.   

    Access 数据库@变量的顺序要跟sql代码里面的变量的顺序一样。
      

  3.   

    在access中 注册的参数的位置要与sql语句中出现的参数位置保持一致哦
    比如注册的时候 @id,@name
    sql 里也要 @id,@name
    它是按参数的定义顺序来取值的,不是按名称来的。
      

  4.   

    如果 CommandType 设置为 Text,OLE DB .NET 提供程序不支持将参数传递给 OleDbCommand 调用的 SQL 语句或存储过程的命名参数。在这种情况下,必须使用问号 (?) 占位符。例如: SELECT * FROM Customers WHERE CustomerID = ? 因此,OleDbParameter 对象添加到 OleDbParameterCollection 的顺序必须直接对应于命令文本中参数的问号占位符的位置。注意 
    如果集合中的参数不匹配要执行的查询的要求,则可能会导致错误。
     
    http://msdn.microsoft.com/zh-tw/library/system.data.oledb.oledbcommand.parameters(VS.80).aspx
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/