使用动态SQL怎么将一行数据中的多个字段取出来
使用动态SQL如何将一行数据中的多个字段取出来?
如题,小弟现在在做毕业设计,整个界面是左边是一个Datawindow,选中时,获取该行的id,并通过动态SQL语句从数据库中取出该行的详细信息。
但目前遇到了问题,就是取出通过动态SQL能取出一个字段的值,取出两个字段时虽然不报错,但显示不出来。
代码如下:
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;
string type1
string type2
String SQLstatement
string pid
pid=trim(rowid)
//rowid是通过选中Datawindow中的某行获得的该行id
SQLstatement = "select pmtype1, pmtype2 into :type1, :type2 from pokemon where pmid=?"
PREPARE SQLSA FROM :SQLstatement;
OPEN DYNAMIC my_cursor using :pid;
FETCH my_cursor INTO :type1,:type2;
sle_3.text=type1
sle_4.text=type2
CLOSE my_cursor;
但是,如果只取一个字段的值,它就显示正常,代码如下:
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;
string type1
string type2
String SQLstatement
string pid
pid=trim(rowid)
SQLstatement = "select pmtype1 into :type1 from pokemon where pmid=?"
PREPARE SQLSA FROM :SQLstatement;
OPEN DYNAMIC my_cursor using :pid;
FETCH my_cursor INTO :type1;
sle_3.text=type1
CLOSE my_cursor;
嘛,顺带还有一个问题,请教一下,在数据库中有一列是blob的图像,请问取出来应该要如何操作。
图片框的名字是p_1。
就是将数据库中的图片显示在图片框中。
------解决方案--------------------
1.首先,数据库取值是没问题的,但是如果你字段涉及到了二进制的字段,那肯定取不出值。
2.取大字段要使用selectbolb进行。
3.如果存储的是图像,当然要先把图像传化成流,存到数据库,然后在逆向还原就可以了。将图像还原到本地的某个文件夹中,将P_1的路径设置为图片路径。
4.如果是二进制转换,也可以使用p_1的setpicture属性,直接把二进制的值传进去。
5.。。。。。。
------解决方案--------------------
检查一下你的代码吧。
在 OPEN DYNAMIC my_cursor using :pid; 后写上
if sqlca.sqlcode <> 0 then
messagebox('', sqlca.sqlerrtext)
end if
如题,小弟现在在做毕业设计,整个界面是左边是一个Datawindow,选中时,获取该行的id,并通过动态SQL语句从数据库中取出该行的详细信息。
但目前遇到了问题,就是取出通过动态SQL能取出一个字段的值,取出两个字段时虽然不报错,但显示不出来。
代码如下:
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;
string type1
string type2
String SQLstatement
string pid
pid=trim(rowid)
//rowid是通过选中Datawindow中的某行获得的该行id
SQLstatement = "select pmtype1, pmtype2 into :type1, :type2 from pokemon where pmid=?"
PREPARE SQLSA FROM :SQLstatement;
OPEN DYNAMIC my_cursor using :pid;
FETCH my_cursor INTO :type1,:type2;
sle_3.text=type1
sle_4.text=type2
CLOSE my_cursor;
但是,如果只取一个字段的值,它就显示正常,代码如下:
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;
string type1
string type2
String SQLstatement
string pid
pid=trim(rowid)
SQLstatement = "select pmtype1 into :type1 from pokemon where pmid=?"
PREPARE SQLSA FROM :SQLstatement;
OPEN DYNAMIC my_cursor using :pid;
FETCH my_cursor INTO :type1;
sle_3.text=type1
CLOSE my_cursor;
嘛,顺带还有一个问题,请教一下,在数据库中有一列是blob的图像,请问取出来应该要如何操作。
图片框的名字是p_1。
就是将数据库中的图片显示在图片框中。
------解决方案--------------------
1.首先,数据库取值是没问题的,但是如果你字段涉及到了二进制的字段,那肯定取不出值。
2.取大字段要使用selectbolb进行。
3.如果存储的是图像,当然要先把图像传化成流,存到数据库,然后在逆向还原就可以了。将图像还原到本地的某个文件夹中,将P_1的路径设置为图片路径。
4.如果是二进制转换,也可以使用p_1的setpicture属性,直接把二进制的值传进去。
5.。。。。。。
------解决方案--------------------
检查一下你的代码吧。
在 OPEN DYNAMIC my_cursor using :pid; 后写上
if sqlca.sqlcode <> 0 then
messagebox('', sqlca.sqlerrtext)
end if