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() }
} }
你这样做输出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)