有关表名与字段名 (50分)

  • 主题发起人 主题发起人 javajsp
  • 开始时间 开始时间
J

javajsp

Unregistered / Unconfirmed
GUEST, unregistred user!
此函数是通过传入表名,及一个字串值,查询第一个字段值为strQuery的记录。
请问用什么替换 Col(1)
public String Getquery(String str,String strQuery)
{//str是一个表的 表名 ,strQuery是一个值待查询
sql="select * from " + str + " where Col(1)='"+strQuery+"'";
执行sql语句
}
 
我觉得你的数据库设计不规范,哪有这么查的?
关系数据库的定义,其中有一条就是,各字段之间没有前后顺序。
你这里col(1)都不指定字段名,天知道是返回的哪一个字段的值,这样有何意义?
最好不要这样!
 
public String Getquery(String str,String strQuery,String ColName)
{//str是一个表的 表名 ,strQuery是一个值待查询
sql:='select * from '+Str+ 'where '+ColName+' = '+''''+StrQuery+'''';(delphi)

sql:="select * from "+Str+ "where "+ColName+" ="+""""+StrQuery+"""";(vb)点是多是少多试
几下,(可能前三后四,很久没用了)
执行sql语句
}
 
先得到第一个字段的字段名.
public String Getquery(String str,String strQuery)
{//str是一个表的 表名 ,strQuery是一个值待查询
var
Fieldone:string ;
query1.sql.text:="select * from " + str ;
Fieldone:=Query1.Fields[0].FieldName ;
sql:="select * from " + str + " where '+fieldone+'='"+strQuery+"'";
执行sql语句
}
 
to wukw:
我有一系列的表名都是对照表,都是两个字段的,第一字段是ID,第二字段是值。
我做这样一个统一的接口,那只关心第几个字段,不关心字段名。
如果表是我设计的,我会设计一样的字段名。可是我是接别人的工作,那没办法呀。
为什么用DELPHI回答呀,有纯粹的SQL语句做到的吗?我知道排序可以order by 1
取字段值可以 getString(1);但where 语句就不行 1='?'
有没有替代的。
 
此函数会根据ID和字段ID返回字段名称
select col_name(object_id('table1'),ordinal_position)
from information_schema.columns
where table_name='table1'
------------------------------------
以上是在MS SQL平台上的
 
to gong666:
请问在什么环境下实现,我在Oracle的SQL plus 执行不了,提示如下。
SQL> select col_name(object_id('table'),1)
2 from information_schema.columns
3 where table_name='mzdm'
4 ;
from information_schema.columns
*
ERROR 位于第 2 行:
ORA-00942: 表或视图不存在
 
做个数组查一下这个表的第一个子段叫什么就行了,反正表结构你是知道的。
做不到全自动,半自动也可以嘛。
顺便说一句,你这种编程方法我是一点点都不赞成的。
 
to 曹晓钢:
我还没有花时间审视一下我的编程方法是否正确,不过现在我是觉得比较方便。
可能我还没完整介绍编程背景吧!前面别人做的表好多都是两个字段的。第一字段是ID
第二字段是值。我要有一个函数通过表名,返回的值刚好可以作为下拉列表让人选,内容
是第二字段的值,内部的值是ID。
你觉得我该怎么解决更好呢?
public String getOptionlist(String str,String sIndex)
{//将表 str 中的 ID 与 含义组合生成选择列表
String tt="",sRet="";
try {
tt="select * from " + str +" ORDER BY 2";
rs = executeQuery(tt);
while(rs.next()){
tt=rs.getString(1);
if (sIndex.equals(tt))
sRet+="<Option value=" + tt + " selected>" + tt2 + "</Option>";
else
sRet+="<Option value=" + tt + ">" + rs.getString(2) + "</Option>";
}
rs.close();
}
catch(SQLException ex) {
System.err.println("connect.getOptionlist: " + ex.getMessage());
}
return sRet;
}
 
如果是oracle,可以查询系统表得到字段的排序,具体哪个表我记不得了。
 
我也同意javajsp的做法,那样市很好的。
如果确实没有什么好的办法的话,那就苯点做啊:
先进行一次查询(不带条件),取出你需要的字段名,然后再
查询一次吧。
 
Select Column_Name from sys.all_tab_columns
where (Owner='~Schema~') and (Table_Name='~TableName~') and (column_id=1)
可以返回指定模式下指定表的第一个字段的字段名
 
分不多,意思一下就行了。
各为给我提的建议,我慢慢去实践吧。
现在忙着写论文,有空再说吧。
 
后退
顶部