我這里有個(gè)現(xiàn)成的數(shù)據(jù)庫(kù)連接類
成都創(chuàng)新互聯(lián)公司自2013年起,先為湟中等服務(wù)建站,湟中等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為湟中企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
先配個(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 你表中書名的那一列的列名 like '%書名%'")
%是通配符 就是說(shuō)如果書名是"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è)表吧
一般多個(gè)條件的時(shí)候,處理方式是 select * from table where 1 = 1先寫上這樣一個(gè)條件,這樣你以后的條件就可以直接用 if判斷了,比如現(xiàn)在有A ,B 兩個(gè)條件 就可以直接這樣
String sql = "select * from table where 1 = 1";
if( 條件A != null ){
sql += " and A =" + 條件A;
}
if( 條件B != null ){
sql += " and B =" + 條件B;
}
這樣就可以避免多種情況存在的問(wèn)題
你這樣做輸出SS語(yǔ)句調(diào)試看看,你會(huì)發(fā)現(xiàn)你輸出的SQL語(yǔ)句有問(wèn)題!
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 專業(yè)='"+zh+"'";i=0;}
else {ss=ss+"AND 專業(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ǔ)句上很嚴(yán)重的錯(cuò)誤 WHERE 后面接了AND關(guān)鍵詞
可以這樣改:ss=ss+" " + "姓名='"+na+"'" +" " +"AND";
最后使用replaceAll('AND$', ")") 替換最后一個(gè)AND字符穿?;蛘呤褂米址麆?chuàng)截取 去掉最后三個(gè)字符(AND)