这里最重要的就是cSQLCommand参数,它就是一个DM数据库可以识别的SQL字符串。正如你所想,你可以直接传送SQL字符串,或者你也可以用拼接字符串的方法,构造动态SQL语句,来使用DM数据库。
例如:
1. SQLEXEC(hdl_conn,"CREATE TABLE TBL_VFP_DM (C1 INTEGER,C2
VARCHAR(10),C3 VARCHAR(50))")
2. SQLEXEC(hdl_conn,"INSERT INTO TBL_VFP_DM
VALUES(1,'ANDY','ANDY IS NO1')")
3. Local id,name,info,sqlstr
Id=id
Name=”ROCK”
Info=”ROCK is test”
Sqlstr=”insert into TBL_VFP_DM
VALUES(”+val(id)+”,’”+name+”’,’”+info+””’)
SQLEXEC(hdl_conn, Sqlstr)
4. SQLEXEC(hdl_conn,"SELECT C1 AS ID,C2 AS NAME,C3 AS CONTENT FROM TBL_VFP_DM", "mycursor")
2) 使用VFP的SQL访问DM数据库
使用上述方法已经可以访问,并且使用DM数据库了,但是,这样的话并没有体现出VFP的强项----操纵数据,实际上,我们可以有更好的方法,来让VFP使用DM。
再看一下SQLEXEC()函数原型
SQLEXEC(nConnectionHandle, [cSQLCommand, [cCursorName]])
在cSQLCommand参数为SELECT语句的时候DM数据库会返回给用户一个结果集,我们可以使用函数的第三个参数 cCursorName,给这个结果集命名,它在VFP中被称为游标,其实就是相当于DM数据库的表映射为VFP里的一张虚拟表。有了它,我们就可以直接使用VFP的语法对这张虚拟表进行操作,就像操作VFP自己的表一样,而且以上进行的操作都会如实的反映到真实的DM数据库中。
所以我们可以这样获得游标
SQLEXEC(hdl_conn,"SELECT C1 AS ID,C2 AS NAME,C3 AS CONTENT FROM TBL_VFP_DM", "mycursor")
这里为了更好的标明字段的意思,我们对C1,C2,C3字段分别使用了别名ID,NAME,CONTENT