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)
可以这样:根据判断传入参数是否为空格或null来判断是否有这个查询条件,来拼凑出不同的sql语句,例如StringBuffer sb = new StringBuffer()
sb.append("select * from a where 1=1")
if(!"".equals("a") || null != a){
sb.append(" and a = " + a)
}
就像这样来根据不同条件查询
我这里有个现成的数据库连接类先配个数据源
import java.sql.*
public class DB{
Connection con
Statement stt
private void begin()
{
if(con!=null||stt!=null)
{
this.closs()
}
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
con = DriverManager.getConnection("jdbc:odbc:数据源名")
stt = con.createStatement()
}
public Resultset qu(String sql)
{
this.begin()
return stt.executeQuery(sql)
}
public boolean cun(String sql)
{
this.begin()
return stt.execute(sql)
}
public void closs()
{
stt.close()
con.close()
}
}
要用的时候 DB a = new DB()
a.qu("select * from 你的表名 where 你表中书名的那一列的列名 like '%书名%'")
%是通配符 就是说如果书名是"12ab45" 你输入"ab 也能查询到" 如果不需要可以去掉%
a.qu()
返回一个ResultSet
你可以创建一个数组
String[][] b = new String[返回的Result的条数][JTable中需要显示的列数量]
用new JTable(String[][],String[])的方法来构造这个表吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)