
2.用jdbc或者mybatis。
3.配置文件应该是jdbc.properties吧?一般不需要,因为jdbc.properties里一般只写driver 、url、username和password,顶多还有一些连接池相关的配置。
你这样做输出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)
首先创建可以可以 *** 作数据库的模型用来实现crudpackage model
/*
* 负责对数据库 *** 作的表模型
*/
import java.sql.*
public class SqlModel {
static Connection con=null
static PreparedStatement ps=null
static ResultSet rs=null
//ResultSet rs2=null
public SqlModel(){
try {
//加载驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
//2、得到连接(指定连接到那个数据源),hostel:数据源名
con=DriverManager.getConnection("jdbc:odbc:hostel","","")
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
//负责增、删、改的方法
public boolean update(String sql,String []paras){
boolean b=true //判断是否删除成功
try {
ps=con.prepareStatement(sql) //向数据库发送sql语句
//利用循环给sql语句中的问号赋值
for(int i=0i<paras.lengthi++){
ps.setString(i+1, paras[i])
}
//得到结果
//int rs=ps.executeUpdate()
ps.executeUpdate()
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
return b
}
//负责查询的方法
public ResultSet query(String sql, String []paras){
try {
ps=con.prepareStatement(sql) //向数据库发送sql语句
//利用循环给sql语句中的问号赋值
for(int i=0i<paras.lengthi++){
ps.setString(i+1, paras[i])
}
//得到结果
rs=ps.executeQuery()
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
return rs
}
//关闭数据库连接的方法
public void close(){
try {
if(rs!=null){rs.close()}
if(ps!=null){ps.close()}
if(con!=null){con.close()}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
}
再创建一个表模型,
package model
import java.sql.*
import java.util.*
import javax.swing.JTable
import javax.swing.table.AbstractTableModel
public class Table extends AbstractTableModel{
SqlModel sm
Connection con=null
PreparedStatement ps=null
ResultSet rs=null
Vector Hang,Lie
//查询的方法
public void ShuJuKuLianJie(String sql,String []paras){
try {
Hang=new Vector()
Lie=new Vector()
SqlModel sm=new SqlModel()
rs=sm.query(sql, paras)
//利用ResultSetMetaData可以得到返回列的列名
ResultSetMetaData rsm=rs.getMetaData()
for(int i=0i<rsm.getColumnCount()i++){
this.Hang.add(rsm.getColumnName(i+1))
}
while(rs.next()){
Vector<String>lie=new Vector<String>()
for(int i=0i<rsm.getColumnCount()i++){
lie.add(rs.getString(i+1))
}
Lie.add(lie)
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
}finally{
try {
if(rs!=null){rs.close()}
if(ps!=null){ps.close()}
if(con!=null){con.close()}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
}
//增删改方法
public boolean ZhengShanGai(String sql,String paras[]){
boolean b=true //用来返回 *** 作是否成功
SqlModel sm=new SqlModel()
try {
b=sm.update(sql, paras)
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
}finally{
sm.close()
}
return b
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
//得到共有多少列
return this.Lie.size()
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
//得到共有多少行
return this.Hang.size()
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
//得到某行某列的数据
return ((Vector) this.Lie.get(rowIndex)).get(columnIndex)
}
public String getColumnName(int column) {
// TODO Auto-generated method stub
return (String)this.Hang.get(column)
}
}
查询过后别忘记刷新表模型
.setModel()方法
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)