你這樣做輸出SS語(yǔ)句調(diào)試看看,你會(huì)發(fā)現(xiàn)你輸出的SQL語(yǔ)句有問(wèn)題!
創(chuàng)新互聯(lián)建站從2013年創(chuàng)立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元紅花崗做網(wǎng)站,已為上家服務(wù),為紅花崗各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
String ss="SELETE * FROM MESSAGE WHERE";
int i=1;char 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 專(zhuān)業(yè)='"+zh+"'";i=0;}
else {ss=ss+"AND 專(zhuān)業(yè)='"+zh+"'";i=1;}
}
if(ni!="")
{
if(i==0){ss=ss+"AND 年級(jí)='"+ni+"'";}
else {ss=ss+"AND 年級(jí)='"+ni+"'";}
}
ss=c+ss+c;
rs=sql.executeQuery(ss);
就拿第一個(gè)SQL語(yǔ)句來(lái)做示范,加入你的na值為abc,輸出的SS是 SELETE * FROM MESSAGE WHEREAND 姓名= 'abc'
仔細(xì)一看就知道SQL語(yǔ)句上很?chē)?yán)重的錯(cuò)誤 WHERE 后面接了AND關(guān)鍵詞
可以這樣改:ss=ss+" " + "姓名='"+na+"'" +" " +"AND";
最后使用replaceAll('AND$', ")") 替換最后一個(gè)AND字符穿?;蛘呤褂米址麆?chuàng)截取 去掉最后三個(gè)字符(AND)
我這里有個(gè)現(xiàn)成的數(shù)據(jù)庫(kù)連接類(lèi)
先配個(gè)數(shù)據(jù)源
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:數(shù)據(jù)源名");
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();
}
}
要用的時(shí)候 DB a = new DB()
a.qu("select * from 你的表名 where 你表中書(shū)名的那一列的列名 like '%書(shū)名%'")
%是通配符 就是說(shuō)如果書(shū)名是"12ab45" 你輸入"ab 也能查詢到" 如果不需要可以去掉%
a.qu()
返回一個(gè)ResultSet
你可以創(chuàng)建一個(gè)數(shù)組
String[][] b = new String[返回的Result的條數(shù)][JTable中需要顯示的列數(shù)量]
用new JTable(String[][],String[])的方法來(lái)構(gòu)造這個(gè)表吧
java多條件不定條件查詢
網(wǎng)站或各類(lèi)管理系統(tǒng)都會(huì)用到搜索,會(huì)用到一個(gè)或多個(gè)不確定條件搜索,單條件搜索比較簡(jiǎn)單,有時(shí)候會(huì)有多個(gè)條件共同查詢,如果系統(tǒng)中已經(jīng)提供了相關(guān)的方法供你使用最好,像我做這老系統(tǒng)改版,需要添加搜索,就要自己寫(xiě)了。開(kāi)始也沒(méi)管那么多,就是拼sql,但是后來(lái)發(fā)現(xiàn)要加搜索地方不少,總是這樣寫(xiě)既增加了工作量,還要做很多重復(fù)工作,說(shuō)不定以后還會(huì)做這樣的工作,所以還是寫(xiě)一個(gè)比較通用的查詢方法。
package com.test;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import javax.annotation.Resource;
import org.apache.poi.hssf.record.formula.functions.T;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import com.ams.bo.webapi.dto.Agent;
public class MultiTaskSearch {
@Resource(name="jdbcTemplate")
private JdbcTemplate jdbcTemplate;
@Resource(name = "storeFrontDAO")
private Map search() {
String name="公司";
String email="@163";
String invoiceTitle="公司";
int sign=1;
String at="2012-04-26";
MapString, Object map=new LinkedHashMapString, Object();//保持添加順序
// MapString, Object map=new HashMapString, Object();//無(wú)固定順序
map.put("name like", name);
map.put("email like", email);
map.put("invoiceTitle like", invoiceTitle);
map.put("sign =", sign);
map.put("addtime=", at);
return map;
}
public T ListT dbSearch(Class typeClass,MapString, Object map,String orderby) {
String paths[] = { "ams-servlet.xml" };
ApplicationContext ctx = new ClassPathXmlApplicationContext(paths);
jdbcTemplate = (JdbcTemplate)ctx.getBean("jdbcTemplate");
ListT TList=null;
String tablename = typeClass.getName().substring(
typeClass.getName().lastIndexOf(".") + 1);
StringBuffer sql=new StringBuffer("select * from ");
sql.append(tablename);
if (map.size()!=0) {
sql.append(" t where 1=1");//后面只需拼接and條件
}
SetEntryString, Object set=map.entrySet();
Iterator iterator=set.iterator();
for (int i = 0; i set.size(); i++) {
Map.Entry mapEntry=(Entry) iterator.next();
if (!"".equals(mapEntry.getValue().toString())) {
//模糊匹配
if (mapEntry.getKey().toString().contains("like")) {
// sql.append(" and t."+mapEntry.getKey()+" "+mapEntry.getValue()+" ");
sql.append(" and t."+mapEntry.getKey()+" '%"+mapEntry.getValue()+"%'");
//精確匹配
}else {
// sql.append(" and t."+mapEntry.getKey()+" '%"+mapEntry.getValue()+"%'");
sql.append(" and t."+mapEntry.getKey()+" "+mapEntry.getValue()+" ");
}
}
}
if (null!=orderby!"".equals(orderby)) {
sql.append(orderby);
}
System.out.println("SQL:"+sql.toString());
TList=jdbcTemplate.query(sql.toString(),new Object[] {}, new BeanPropertyRowMapperT (typeClass));
return TList;
}
public static void main(String[] args) {
MultiTaskSearch mt=new MultiTaskSearch();
Map map=mt.search();
String orderby=" order by addTime desc";
ListAgent agents=mt.dbSearch(Agent.class, map,orderby);
for (Agent agent : agents) {
System.out.println(agent.getName());
}
System.out.println("****************"+agents.size());
}
}
或者可以用拼sql的方法實(shí)現(xiàn)
使用union關(guān)鍵字可以在一個(gè)文本框內(nèi)搜索出多個(gè)條件的數(shù)據(jù)
select t1.* from
(
select * from agent where name like '"2%'
union
select * from agent where email like '"2%'
union
select * from agent where ContactPerson like '"2%'
) t1
這種查詢結(jié)果是所有的集合,也可以把union換成or
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
public class JDBC {
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
private String driver = "com.mysql.jdbc.Driver";
private String url="jdbc:mysql://localhost:3306/dataname
?characterEncoding=GBK";
private String user = "root";
private String password = "mysql";
/**
* 準(zhǔn)備連接
*/
public void startConnection() throws ClassNotFoundException, SQLException {
Class.forName(driver); //注冊(cè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)
con = DriverManager.getConnection(url, user, password); //獲得數(shù)據(jù)庫(kù)連接
}
/**
* 執(zhí)行select 并返回結(jié)果集 throws SQLException
*/
public ResultSet query(String sql) throws SQLException {
stmt = con.createStatement(); //創(chuàng)建Statement
rs = stmt.executeQuery(sql); //執(zhí)行查詢
return rs;
}
/**
* 執(zhí)行insert update delete
*/
public int update(String sql) throws SQLException {
stmt = con.createStatement();
int r = stmt.executeUpdate(sql);
return r;
}
/**
* 釋放資源(連接)
*/
public void releaseConnection() {
try {
if (rs != null)
rs.close();
stmt.close();
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace(); }
} }
新聞名稱(chēng):java代碼中條件查詢 java中條件語(yǔ)句
網(wǎng)址分享:http://jinyejixie.com/article8/dosjoip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、外貿(mào)建站、定制開(kāi)發(fā)、商城網(wǎng)站、網(wǎng)站制作、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容