怎么实现select表单上的选项从数据库取值

怎么实现select表单上的选项从数据库取值,第1张

jsp里的下拉框的选中值传递给servlet 在servlet中 String select=requestgetParameter("selectName");得到的是选中的option的value值

sql字段有逗号隔开,数据取值的方法。

如下参考:

1查询数据库表的所有字段,直接使用select语句,如下图。

2查询数据库表部分的字段,可以使用select字段命令,从数据库表中选择字段名度。

3根据查询的条件,在where之后使用条件,从数据库表中选择字段名所在的条件。

4使用distinct命令查询数据库字段,以记录未重复的结果,如下图所示。

5查询数据库表数据之前有多少条,可以使用top命令,从数据库表中选择号。

6查询数据库表有时为了区分字段,需要回答字段名,可以用as,从数据库表中选择字段名作为字段名。

我设计了一个思想并实现运行成功:

设计思想:

把数据库表中数据全部查出。每一个数据为一个结点,比如说楼主表的A,B字段中共有数据a、b、c、d、e,则这5个数据为5个结点。创建一个双向图表示节点间的关系。比如说楼主提供的数据的双向图为a<--->b<--->c<--->d<--->e,在我的程序中表现为一个结点类的集合。求结果的时候只要求从指定节点能够到达的节点集合就可以了。

求结果时使用递归调用,原理是:求结点a能到达的节点=求结点a关联节点能到达的节点。

程序运行结果:

数据库数据:

+------+------+

| A | B |

+------+------+

| a | c |

| a | d |

| b | e |

| e | f |

+------+------+

result[a]=[a, c, d]

result[c]=[c, a, d]

result[e]=[e, b, f]

更改数据库数据,添加a和e的关联:

mysql> select from aaa;

+------+------+

| A | B |

+------+------+

| a | c |

| a | d |

| b | e |

| e | f |

| e | a |

+------+------+

5 rows in set (000 sec)

result[a]=[a, c, d, e, b, f, a]

从这个结果看出第一个数据库数据a c d和 b e f是独立的两块,建立了a e的关联后,成了一个整体的块,因此从a节点能到达所有节点。

程序代码:

本程序是使用的Mysql数据库,使用时请导入Mysql数据库驱动。创建TestJdbcjava复制代码进来直接运行。

如有错误或者疑问请联系QQ232319792或者1988-2@163com或者直接发百度信息(别用baiduHi)

import javasqlConnection;

import javasqlDriverManager;

import javasqlResultSet;

import javasqlStatement;

import javautilArrayList;

import javautilList;

public class TestJdbc {

public static List<String> result=new ArrayList<String>();

public static void main(String args[]) throws Exception{

select("a");

Systemoutprintln(result);

}

public static void select(String who) throws Exception{

List<Node> nodes=createMap();//获取节点图

Node thisNode=null;

for(Node n:nodes)//从节点图中获取开始节点

if(ngetName()equals(who))thisNode=n;

digui(thisNode,null);//递归调用,假设开始节点的父亲是空的。

}

public static void digui(Node star,Node father){

resultadd(stargetName());//把本次开始节点加入结果集合

//遍历开始节点的关联节点集合

for(Node n:stargetSons()){

if(father!=null && nequals(father))

//该关联节点是开始节点的父亲节点,那么跳过

//当一个关联节点仅有一个关联节点即他的父亲,那么递归结束

continue;

father=star;//递归前设置父亲节点为本次开始节点

digui(n,father);//递归调用

}

}

public static List<Node> createMap() throws Exception{

List<Node> nodes=new ArrayList<Node>();//创建节点集合保存节电双向集合

//以下链接mysql数据库并把所有数据查询出来

String driverName="commysqljdbcDriver";

ClassforName(driverName);

String url="jdbc:mysql://127001:3306/jdbc";

String username="root";

String pwd="root";

Connection con=null;

con=DriverManagergetConnection(url,username,pwd);

Statement stmt = concreateStatement();

ResultSet rs = stmtexecuteQuery("select from aaa;");

//创建节点引用,保存一条记录中的两个字段值

Node temp1=null;

Node temp2=null;

//遍历每条记录

while(rsnext()){

temp1=new Node(rsgetString(1));//创建节点

temp2=new Node(rsgetString(2));

temp1getSons()add(temp2);//设置节点间关联

temp2getSons()add(temp1);//设置节点间关联

if(nodesindexOf(temp1)==-1)//如果A字段节点在节点图中不存在,则加入到节点图中

nodesadd(temp1);

else{//如果A字段节点在节点图中存在了

//得到已经存在的那个节点,并把B字段节点关联给他。

nodesget(nodesindexOf(temp1))getSons()add(temp2);

temp1=nodesget(nodesindexOf(temp1));

//B字段节点关联的节点是已经存在的了,因此要更改关联对象。更改成已经存在的节点而不是new出来的。

temp2getSons()clear();

temp2getSons()add(nodesget(nodesindexOf(temp1)));

}

if(nodesindexOf(temp2)==-1)

//如果B字段节点在节点图中不存在直接加入节点图

nodesadd(temp2);

else{

//否则,要重新关联。

nodesget(nodesindexOf(temp2))getSons()add(temp1);

}

}

return nodes;

}

}

//构造节点类

class Node{

private String name;//节点值

private List<Node> sons=new ArrayList<Node>();//节点关联节点集合

public Node(String name){

thisname=name;

}

public String getName() {

return name;

}

public void setName(String name) {

thisname = name;

}

public List<Node> getSons() {

return sons;

}

public void setSons(List<Node> sons) {

thissons = sons;

}

@Override

public String toString() {

return name+" ";

}

@Override

public boolean equals(Object obj) {

return nameequals(((Node)obj)getName());

}

}

具体你是要怎么写呢

实现方法很多啊

你可以先查询到下拉框需要显示的值

返回一个List

然后在页面的时候循环迭代就可以显示了

具体的 你可以百度hi我

以上就是关于怎么实现select表单上的选项从数据库取值全部的内容,包括:怎么实现select表单上的选项从数据库取值、sql字段里有逗号隔开的数据,怎么取值、从数据库中循环取值的算法 java等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9429321.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存