十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你这样做输出SS语句调试看看,你会发现你输出的SQL语句有问题!
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的阿尔山网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
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 专业='"+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)
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";
/**
* 准备连接
*/
public void startConnection() throws ClassNotFoundException, SQLException {
Class.forName(driver); //注册数据库驱动
con = DriverManager.getConnection(url, user, password); //获得数据库连接
}
/**
* 执行select 并返回结果集 throws SQLException
*/
public ResultSet query(String sql) throws SQLException {
stmt = con.createStatement(); //创建Statement
rs = stmt.executeQuery(sql); //执行查询
return rs;
}
/**
* 执行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(); }
} }
我这里有个现成的数据库连接类
先配个数据源
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[])的方法来构造这个表吧