当前位置: 代码迷 >> PB >> 如何获取SQL语句执行的结果
  详细解决方案

如何获取SQL语句执行的结果

热度:162   发布时间:2016-04-29 09:25:25.0
怎么获取SQL语句执行的结果?
一个SQL语句里面的 where 后的条件是动态变化的(比如有可能是“金额大于1”,也有可能是“数量小于10),想通过代码执行该SQL,并获取该结果(该结果有可能是一行,也有可能是多行数据)

------解决方案--------------------
用数据存储
C/C++ code
datastore ldsstring ls_sqlstring error_syntaxfromSQL, error_createstring ls_syntaxlong ils_sql = "select col1, col2 from t_table where je > 0"lds = create datastorels_syntax = sqlca.SyntaxFromSQL(ls_sql, 'Style(Type=Grid)', error_syntaxfromSQL)IF Len(error_syntaxfromSQL) > 0 THEN    messagebox("",'生成数据存储语法发生错误!~r~n错误原因:' + error_syntaxfromSQL)        destroy lds    return -1ELSE    lds.Create(ls_syntax, error_create)    IF Len(error_create) > 0 THEN        f_message( '建立数据存储时发生错误!~r~n错误原因:' + error_create)        destroy lds        return -1    END IFEND IF//此时lds中存储的就是通过ls_sql获得的数据,可能是1行也可能是多行,行数对应lds.rowcount()//for i = 1 to lds.rowcount()    //第i行的col1的值    lds.object.col1[i]    //第i行的col2的值    lds.object.col2[i]nextdestroy lds
------解决方案--------------------
C/C++ code
string ls_sqlstring ls_syn,ls_errls_sql = " SELECT aa,bb cc FROM tab_1 WHERE aa='01' " //这里的字符串可以动态构造//生成数据窗口语法ls_syn = SQLCA.SyntaxFromSQL(ls_sql,'Style(Type=Grid),ls_err)if len(ls_err)>0 then    MessageBox("提示","生成语法失败")    returnend ifdw_1.Create(ls_syn,ls_err)if len(ls_err)>0 then    MessageBox("提示","创建数据窗口失败")    returnelse    dw_1.SetTransObject(SQLCA)        dw_1.Retrieve()    commit;    //检索数据完成,可以进行操作    ...end if
  相关解决方案