jdbc已经写好了
下面这个是一个人写的dao
我看的不怎么懂啊,如果我在另一个类里面写了一个
String getRelayP="select Relay_p from Terminal_tab where Relay_p ='"+terminalID+ "'";
我要怎么才能执行它呢?求大神讲解一下  谢谢public class ControlDao extends AbstractTableModel{

Vector<String> colums;
Vector rows;
//无参的构造方法
public ControlDao() {
}
//终端控制
public boolean updControlTerminal(String sql,String paras[]){
boolean b=true;
try {
DBConnection dbc=new DBConnection();
Connection conn;
PreparedStatement ps=null;
conn=dbc.getconnection();
ps=conn.prepareStatement(sql);
for(int i=0;i<paras.length;i++){
ps.setString(i+1, paras[i]);
}
if(ps.executeUpdate()!=1){
b=false;
}
} catch (Exception e) {
b=false;
e.printStackTrace();
}finally{
SqlHelp sh=new SqlHelp();
sh.closeAll();
}
String paras1[]={"1"};
ControlDao em=new ControlDao("select * from Terminal_tab where 1=?", paras1);
ControlManagerInfo.jtable.setModel(em);
return b;
}
//全局控制和组控制
public boolean updControl(String sql,String paras){
boolean b=true;
try {
DBConnection dbc=new DBConnection();
Connection conn;
PreparedStatement ps=null;
conn=dbc.getconnection();
ps=conn.prepareStatement(sql);
//for(int i=0;i<paras.length;i++){
ps.setString(1, paras);
//}
if(ps.executeUpdate()!=1){
b=false;
}
} catch (Exception e) {
b=false;
e.printStackTrace();
}finally{
SqlHelp sh=new SqlHelp();
sh.closeAll();
}
String paras1[]={"1"};
ControlDao em=new ControlDao("select * from Terminal_tab where 1=?", paras1);
ControlManagerInfo.jtable.setModel(em);
return b;
}

//构造方法,用于查询需要显示的终端信息及刷新列表
public void selControl(String sql,String paras[]){
//初始化列
this.colums=new Vector<String>();
//初始化行
this.rows=new Vector<String>();
//创建一个SqlHelp的对象
SqlHelp sh=new SqlHelp();
ResultSet rs=sh.query(sql, paras);
try {
//rs中得到一个ResultSetMetadata
ResultSetMetaData rsmt=rs.getMetaData();
for(int i=0;i<rsmt.getColumnCount();i++){
this.colums.add(rsmt.getColumnName(i+1));
}
while(rs.next()){
Vector<String> temp=new Vector<String>();
for(int i=0;i<rsmt.getColumnCount();i++){
temp.add(rs.getString(i+1));
}
rows.add(temp);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
sh.closeAll();
}

}





//构造方法,用于显示所有的终端信息
public ControlDao(String sql,String paras[]){
//初始化列
this.colums=new Vector<String>();
//初始化行
this.rows=new Vector<String>();
//创建一个SqlHelp的对象
SqlHelp sh=new SqlHelp();
ResultSet rs=sh.query(sql, paras);
try {
//rs中得到一个ResultSetMetadata
ResultSetMetaData rsmt=rs.getMetaData();
for(int i=0;i<rsmt.getColumnCount();i++){
this.colums.add(rsmt.getColumnName(i+1));
}
while(rs.next()){
Vector<String> temp=new Vector<String>();
for(int i=0;i<rsmt.getColumnCount();i++){
temp.add(rs.getString(i+1));
}
rows.add(temp);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
sh.closeAll();
}

}

//获得表的列数
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return this.colums.size();
}
//获得表的行数
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return this.rows.size();
}
//获得表内的具体表内的某一元素
@Override
public Object getValueAt(int arg0, int arg1) {

return ((Vector)rows.get(arg0)).get(arg1);
} //获得列名
@Override
public String getColumnName(int column) {
// TODO Auto-generated method stub
return this.colums.get(column).toString();
}}

解决方案 »

  1.   

     ①.ControlDao em=new ControlDao("select * from Terminal_tab where 1=?", paras1);
     ②.String getRelayP="select Relay_p from Terminal_tab where Relay_p +terminalID+ "'";
     ③.把②拆解为:
     String getRelayP="select ? from Terminal_tab where Relay_p =?";
     String[] paras1={"Relay_p","terminalID"};
     ④.把①换为ControlDao em=new ControlDao=("select ? from Terminal_tab where Relay_p =?",paras1);