有关SQL查询语句中变量的问题
请教各位大侠另外一个问题,此问题让小弟困惑了一下午,至尽忍不明白,希望能得到各位的指点。
(我的环境:MS SQL + Apache + resin(用jsp实现))
我要在一个表的索引表中找出一些需要的表的表名,通过一个select语句把这些表名找出来了(假如有2个表名,sign1,sign2),并且放到了一个字符串数组里,然后通过一个循环,把这2个表的数据依次显示出来(每个表里有7列数据,都是字符串)。
我的第一个表里有2行数据,第二个表里有1101行数据,如果我用下面的SQL语句进行选择,则,第一个表的内容全部显示,而第二个表的内容只显示到1086行,第1087行就中间提示错误。
theSQL = "select * from " + selectedTable[thenum] ;
然而,如果我只用下面这一条语句来显示第二个表的内容,则可以把所有的1101行内容全部显示完毕。
theSQL = "select * from sign2;
多谢,多谢
问题点数:0、回复次数:5Top
1 楼gmlxf(烛光)回复于 2003-11-04 20:00:48 得分 0
应该是你的前台程序的问题吧。
如果想联合,可以
select * from sign1 union select * from sign2...
theSQL =theSQL + " union select * from " + selectedTable[thenum] ;Top
2 楼zjcxc(邹建)回复于 2003-11-04 20:50:13 得分 0
将你的代码贴出来看看.Top
3 楼yajunchen(亚军)回复于 2003-11-04 21:28:30 得分 0
我建立了一个表的索引表index,index表里根据college和grade的不同组合可以对应不同的表,如sign1,sign2,sign3......而sign1,sign2,sign3......表里存放了一些信息(如成绩信息等)。
现在我需要根据用户输入的信息,动态的从index表里选出相应的表,比如选中了sign1和sign2表,然后再到sign1,sign2表里去查询和显示相关的信息。
用SQL语句实现的时候,语句为:
select tablename
from index
where college = '计算机学院'
((grade = '2003级') or (grade = '2002级'))
通过此语句,可以得到一个结果集(ResultSet),例如为rs,但是由于在程序的运行过程中,年级(grade)是可选的,也就是实现说不知道到底会对应几个年级,因此也就不知道结果集rs里到底有多少个数据。
我想从结果集rs 里取出数据(相应的表名),然后存放到一个字符串数组里,最后通过循环来把选出来的每张表的数据取出来,进行显示。
然而由于事先不知道结果集rs里有多少个数据,所以在定义字符串数组时,就只好人为的定义为5。
结果在运行的时候总是有一些不太对劲的地方,就是我上面提问时出现的问题,但是如果我的查询的表只有2张,那么直接把字符串数组定义为2,就没有什么问题了。但是这个长度毕竟是变化的,我应该怎么办呢?
请教各位,有没有什么好的办法来解决这个问题。
我想了几种:
(1)是否能从结果集rs中直接取得结果集中的数据个数。
(2)是否能用别的方法来定义一个不需要长度限制的数据结构来存放表名信息。
(3)是否有更好的办法?如Vector或者Hash表的方式。
Top
4 楼gmlxf(烛光)回复于 2003-11-04 22:40:18 得分 0
你不要定义字符串数组,直接在符合你的条件的表中查询出来。
你的那些表的字段都是怎么样的?是结构一样的吗,如果是你可以连接查询结果。
你可以用动态sql,存储过程来实现。
Top
5 楼yajunchen(亚军)回复于 2003-11-05 20:01:22 得分 0
那我直接用下面这条语句可以吗?
select *
from (select tablename
from record_index
where college = '软件学院'
and grade = '2003级')
where issigned = "否"
Top




