java中的条件查询怎么写

Python014

java中的条件查询怎么写,第1张

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() }

} }

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