jsp中使用输入框获取要模糊查询的查询条件,提交到后台,假设为:abc;sql语句中,将查询条件传入,拼接sql语句,类似于:select from table_name where column_name like '%abc%'
1可以用离线查询,就是先把数据都取出来,再用list *** 作。
2实时查询,每次查询5条记录,即第一条,下一条,当前记录,前一条,最后一条。这样就有了每条记录的id号,再提交按钮的是后直接用java查询,重复即可。
Statement stm=conncreateStatement();
ResultSet rs=stmexecute("查询语句");
他会返回一个ResultSet 结果集
然后通过rsnext()方法便利结果集中的值
代码示例:
ClassforName("驱动地址");
Connection con=DriverManagergetConnection("数据库地址","用户名","密码");
Statement stm=concreateStatement();
ResultSet rs=stmexecute("查询语句");
while(rsnext()){
String str=rsgetString("对应的列名");
String str1=rsgetString(2);
int i=rsgetInt(3);
}
String stuNumber=txtNumbergetText(); //得到文本框中你输入学号学号
连接查询:
PreparedStatement ps = null;
ResultSet rs = null;
Connection conn = DriverManagergetConnection(url,username,password);
ps = connprepareStatement("select name from student where number = ");
pssetString(1, stuNumber);
rs = psexecuteQuery();
while(rsnext()){
String stuName = rsgetString("name");
}
然后,把查出的姓名给文本框
txtNamesetText(stuName);
JTable的有一个方法是getTableModel()返回提供此 JTable 所显示数据的 TableModel
TableModel是一个接口,实际上返回的是DefaultTableModel类,它实现了TableModel接口。这个类中有一个方法是void addRow(Object[] rowData)。它就是将一行插入到JTable中。
不过JTable的setValueAt方法应该就可以实现。
楼主可以定义个一个线程类来完成。
比如你需要插入100行数据,可以在线程的run方法中写一个循环,在循环中写两行代码,一行是setValueAt,一行是刷新JTable,然后再让线程睡眠,这样一行一行的显示的效果就可以出来了!
或者楼主可以用进度条来打发等待的时间,就像打开netbeans的那个进度条一样,这个可以用JProgressBar类。楼主可以去查看一下源代码。如果楼主还是没有头绪,我干脆就写个例子得了!
关于组件的添加或者类似设置窗口的大小,布局管理器等我就不做解释了!
import javaxswing;
import javaawtevent;
import javaawt;
import javaxswingtable;
public class Test extends JFrame implements ActionListener
{
private JButton button1;
private JButton button2;
private JButton button3;
private DefaultTableModel model;
private JTable table;
private JProgressBar bar;
private JScrollPane scrollpane;
private JPanel panel;
public Test()
{
button1=new JButton("演示1");
button2=new JButton("演示2");
button3=new JButton("清空");
panel=new JPanel();
bar=new JProgressBar(0,100);
String[] colnames={"数据一","数据二"};
model=new DefaultTableModel(colnames,100);
table=new JTable(model);
scrollpane=new JScrollPane(table);
panelsetLayout(new FlowLayout());
button1addActionListener(this);
button2addActionListener(this);
button3addActionListener(this);
paneladd(button1);
paneladd(button2);
paneladd(button3);
paneladd(bar);
thissetLayout(new GridLayout(2,1));
thissetSize(500,600);
thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
thisadd(scrollpane);
thisadd(panel);
}
public void actionPerformed(ActionEvent e)
{
String command=egetActionCommand();
if(commandequals("演示1"))
{
ShowModel show=new ShowModel(true);
Thread thread=new Thread(show);
threadstart();
}
else if(commandequals("演示2"))
{
ShowModel show=new ShowModel(false);
Thread thread=new Thread(show);
threadstart();
}
else
{
String[] colnames={"数据一","数据二"};
model=new DefaultTableModel(colnames,100);
tablesetModel(model);
}
}
private class ShowModel implements Runnable
{
private boolean type;//当type为true时,则说明是“演示1”的线程,false则相反
public ShowModel(boolean type)
{
thistype=type;
}
public void run()
{
if(type)//这个就是让线程睡眠,并且设置JTable的值
{
try{
for(int i=0;i<100;i++)
{
TestthistablesetValueAt(StringvalueOf(i),i,0);
TestthistablesetValueAt(StringvalueOf(i),i,1);
Threadsleep(100);
}
}catch(Exception e)
{
eprintStackTrace();
}
}
else//这个就是进度条的演示
{
try{
TestthistablesetVisible(false);
for(int i=0;i<100;i++)
{
TestthistablesetValueAt(StringvalueOf(i),i,0);
TestthistablesetValueAt(StringvalueOf(i),i,1);
TestthisbarsetValue(i+1);
TestthisbarsetString(StringvalueOf(i+1)+"%");
Threadsleep(40);
if(i==99)
{
TestthistablesetVisible(true);
JOptionPaneshowMessageDialog(Testthis,"OK");
TestthisbarsetValue(0);
}
}
}catch(Exception e)
{
eprintStackTrace();
}
}
}
}
public static void main(String[] args)
{
Test test=new Test();
testsetVisible(true);
}
}
你的意思是先查询出来所有数据后,再显示到下拉菜单中去对吗?
如果是的话,按下面的思路做,相信你能做出来:
首先你访问这个界面前,要先去查询数据库中的数据,一般这些数据都装到一个list(集合,不一定用List)中去,然后再转到(如果是web项目,就是跳转了,这时把这个list装到request中,requestsetAt(“list”,lits);如果用的是桌面应用程序,就把这个list以参数的形式传到界面类上去)你的界面上,在界面上做一个下拦菜单,然后呢,就是一个循环输出list中包含的所有数据库中的数据,把每次循环取出来的信息放入下拉菜单的选项中去,这样,有多少数据,这个下拉菜单就有多少选项了,不知道是不是你想要的结果,如果不是,你可以再说详细点,方便大家为你解答,。
你的意思就是根据id 找数据本身以及他的叶子节点。 假设你的表叫location
rs : ResultSet stmt: Statement
public ResultSet getLocation(int id) {
String sql = "select id, name, pid from location where id = " + id + "or pid = " + id;
rs = stmtexecuteQuery(sql);
}
以上就是关于怎么用java程序对数据库进行模糊查询全部的内容,包括:怎么用java程序对数据库进行模糊查询、java 在数据库中如何查询一条记录、java怎样通过查询语句获得数据库里的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)