java web前端如何按条件查询数据库大量数据

java web前端如何按条件查询数据库大量数据,第1张

1.参数传到后台,通过hibernate的hql语句写一个普通的模糊查询就可以了,hql基本无法优化,只能加索引。

2.用jdbc或者mybatis。

3.配置文件应该是jdbc.properties吧?一般不需要,因为jdbc.properties里一般只写driver 、url、username和password,顶多还有一些连接池相关的配置。

你这样做输出SS语句调试看看,你会发现你输出的SQL语句有问题!

String ss="SELETE * FROM MESSAGE WHERE"

int i=1char c='"'

if(na!=null)

{ss=ss+"AND 姓名='"+na+"'"i=0

System.out.println(ss)

}

if(se!="")

{

if(i==0){ss=ss+"AND 性别='"+se+"'"i=0}

else {ss=ss+"AND 性别='"+se+"'"i=1}

}

if(xi!="")

{

if(i==0){ss=ss+"AND 系别='"+xi+"'"i=0}

else {ss=ss+"AND 系别='"+xi+"'"i=1}

}

if(zh!="")

{

if(i==0){ss=ss+"AND 专业='"+zh+"'"i=0}

else {ss=ss+"AND 专业='"+zh+"'"i=1}

}

if(ni!="")

{

if(i==0){ss=ss+"AND 年级='"+ni+"'"}

else {ss=ss+"AND 年级='"+ni+"'"}

}

ss=c+ss+c

rs=sql.executeQuery(ss)

就拿第一个SQL语句来做示范,加入你的na值为abc,输出的SS是 SELETE * FROM MESSAGE WHEREAND 姓名= 'abc'

仔细一看就知道SQL语句上很严重的错误 WHERE 后面接了AND关键词

可以这样改:ss=ss+" " + "姓名='"+na+"'" +" " +"AND"

最后使用replaceAll('AND$', ")") 替换最后一个AND字符穿。或者使用字符创截取 去掉最后三个字符(AND)

首先创建可以可以 *** 作数据库的模型用来实现crud

package model

/*

* 负责对数据库 *** 作的表模型

*/

import java.sql.*

public class SqlModel {

static Connection con=null

static PreparedStatement ps=null

static ResultSet rs=null

//ResultSet rs2=null

public SqlModel(){

try {

//加载驱动

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

//2、得到连接(指定连接到那个数据源),hostel:数据源名

con=DriverManager.getConnection("jdbc:odbc:hostel","","")

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

//负责增、删、改的方法

public boolean update(String sql,String []paras){

boolean b=true //判断是否删除成功

try {

ps=con.prepareStatement(sql) //向数据库发送sql语句

//利用循环给sql语句中的问号赋值

for(int i=0i<paras.lengthi++){

ps.setString(i+1, paras[i])

}

//得到结果

//int rs=ps.executeUpdate()

ps.executeUpdate()

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

return b

}

//负责查询的方法

public ResultSet query(String sql, String []paras){

try {

ps=con.prepareStatement(sql) //向数据库发送sql语句

//利用循环给sql语句中的问号赋值

for(int i=0i<paras.lengthi++){

ps.setString(i+1, paras[i])

}

//得到结果

rs=ps.executeQuery()

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

return rs

}

//关闭数据库连接的方法

public void close(){

try {

if(rs!=null){rs.close()}

if(ps!=null){ps.close()}

if(con!=null){con.close()}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

}

再创建一个表模型,

package model

import java.sql.*

import java.util.*

import javax.swing.JTable

import javax.swing.table.AbstractTableModel

public class Table extends AbstractTableModel{

SqlModel sm

Connection con=null

PreparedStatement ps=null

ResultSet rs=null

Vector Hang,Lie

//查询的方法

public void ShuJuKuLianJie(String sql,String []paras){

try {

Hang=new Vector()

Lie=new Vector()

SqlModel sm=new SqlModel()

rs=sm.query(sql, paras)

//利用ResultSetMetaData可以得到返回列的列名

ResultSetMetaData rsm=rs.getMetaData()

for(int i=0i<rsm.getColumnCount()i++){

this.Hang.add(rsm.getColumnName(i+1))

}

while(rs.next()){

Vector<String>lie=new Vector<String>()

for(int i=0i<rsm.getColumnCount()i++){

lie.add(rs.getString(i+1))

}

Lie.add(lie)

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

}finally{

try {

if(rs!=null){rs.close()}

if(ps!=null){ps.close()}

if(con!=null){con.close()}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

}

//增删改方法

public boolean ZhengShanGai(String sql,String paras[]){

boolean b=true //用来返回 *** 作是否成功

SqlModel sm=new SqlModel()

try {

b=sm.update(sql, paras)

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

}finally{

sm.close()

}

return b

}

@Override

public int getRowCount() {

// TODO Auto-generated method stub

//得到共有多少列

return this.Lie.size()

}

@Override

public int getColumnCount() {

// TODO Auto-generated method stub

//得到共有多少行

return this.Hang.size()

}

@Override

public Object getValueAt(int rowIndex, int columnIndex) {

// TODO Auto-generated method stub

//得到某行某列的数据

return ((Vector) this.Lie.get(rowIndex)).get(columnIndex)

}

public String getColumnName(int column) {

// TODO Auto-generated method stub

return (String)this.Hang.get(column)

}

}

查询过后别忘记刷新表模型

.setModel()方法


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存