有这么一段代码:
String name = "1";
String sex= "1";
OdbcCommand cmd = new OdbcCommand("select * from user where name = ? and sex=?", conn);
cmd.Parameter.add("@a" , OdbcType.Varchar).Value = name;
cmd.Parameter.add("@b" , OdbcType.Varchar).Value = sex;是成功执行的,但我有过疑问,程序怎么知道name、sex与数据库里的name、sex字段匹配?@a、@b并没有指定位置阿?

解决方案 »

  1.   

    OLE DB .NET Framework 数据提供程序和 ODBC .NET Framework 数据提供程序不支持用于将参数传递到 SQL 语句或存储过程的命名参数。在此情况下,必须使用问号 (?) 占位符,如以下示例所示。SELECT * FROM Customers WHERE CustomerID = ?
      

  2.   

    看来你没明白我的我问题。我想知道:name这个字符串是如何附上去的,add("@a" , OdbcType.Varchar)并没有指定name附给前一个问号还是后一个问号。
      

  3.   


    1楼说的不错
    不过好像oledb用@也可以