sqlapi 传递参数的方法
这次我们看一个插入的例子,如果我们想执行一条插入指令,那么valuse();中的值是从别的变量中获得的怎么办,sqlapi提供了一个方法,我们看下面这个例子:
我们修改SACommand 对象构造方法的参数,SACommand对象的构造方法有两个参数 一个是链接对象的地址(这里是&con),另一个事一条sql语句,并且这个sql语句是以字符串的形式传递的
SAConnection con; // 连接数据对象
con.Connect("orcl", "hr", "hr", SA_Oracle_Client); //connect对象不变
SACommand cmda(&con,"insert into state(pressure,A) values(:1,:2)");
这里使用了:1和:2 这是传递可变参数的地方。还有更多的字段,那么继续加,并且可以不按顺序来,比如:1:3:4:2…… 这里 这个cmda对象构造方法的参数就传递好了,而给:1,:2赋值则需要在执行cmd.Execute();执行命令之前赋值,方式如下:
cmda.Param(1).setAsUShort() = value; //value是自己定义的变量 类型为int
cmda.Param(2).setAsString() = dtValue; //dtValue也是自己定义的变量 类型为char[]
这里可以看到cmda.Param(2).setAsString() 这里有个2 上面的那个有个1 这就是给:2和:1传递参数的方法,具体Param()是SACommand类里面的成员变量还是别的我没有看到源代码,咱们暂时先不用去管它。而后面的setAsUShort()等方法具体哪个类型的参数对应哪个方法参见:http://www.sqlapi.com/OnLineDoc/Param.html
这里千万要注意不同的数据类型对应不同的方法,如果用错了 那么执行语句就不会成功,并且给:1 …赋值一定要在执行语句之前赋值,否则执行也不会成功。
由于这个库在不断更新(主页下方有版本号和对应的修改), 因此数据类型可能还会变动,这个到底如何我还只是猜测,毕竟我不是参与开发这个库的,但是我是在最近刚刚使用到(09年八月),因此看到的文档还是最新的。