public int setSort(String table,String field1,String field2,String wherestr,String orderstr,boolean b)
{
//写入序列号,field2为唯一字段*/
try
{
String sql = "select "+field2+" from "+table;
if(!wherestr.equals(""))sql += " where "+wherestr;
sql += " "+orderstr; pstm = conn.prepareStatement(sql);
rs = pstm.executeQuery();
PreparedStatement pstm_t = null;
int i = 1;
while(rs.next())
{
if(b)
{
sql = "update "+table+" set "+field1+"="+i+" where "+field2+"="+rs.getString(1);
}
else  {
sql = "update "+table+" set "+field1+"="+i+" where "+field2+"='"+rs.getString(1)+"'";
}
pstm_t = conn.prepareStatement(sql);
pstm_t.executeUpdate();
i++;
}

pstm_t.close();
}catch(SQLException sqle){System.out.println("调用MyDataBase.setSort()函数错误:\r\n"+sqle);}
finally{
if(rs!=null){
try{
rs.close();
}catch(SQLException e){System.out.println("调用MyDataBase.setSort()试图释放rs时出错;\r\n错误为:"+e);}
}
if(pstm!=null){
try{
pstm.close();
}catch(SQLException e){System.out.println("调用MyDataBase.setSort()试图释放pstm时出错;\r\n错误为:"+e);}
}
}
return 0;
}怎么看不像啊

解决方案 »

  1.   

    是给表 table  的 field1  字段 设置 顺序值
      

  2.   

    关键这里
    if(b) 

    sql   =   "update   "+table+"   set   "+field1+"="+i+"   where   "+field2+"="+rs.getString(1); 

    else   { 
    sql   =   "update   "+table+"   set   "+field1+"="+i+"   where   "+field2+"='"+rs.getString(1)+"'"; 

    pstm_t   =   conn.prepareStatement(sql); 
    pstm_t.executeUpdate(); 
    i++;那boolean b什么时候是true,什么时候为false啊
     
      

  3.   

    应该是:field2 是数值类型的 时候 为true  
    是字符类型的时候为false
      

  4.   

    发表于:2008-02-24 17:04:104楼 
    应该是: 
    field2   是数值类型的   时候   为true     
    是字符类型的时候为false 和b怎么连续上的啊 我是菜鸟 能说详细一点吗,谢谢了
      

  5.   

    这个方法的作用:查询出table的field2字段   根据每个field2字段的值  设置(update)field1成为一个顺序值由于这个field2字段的类型 会影响你的更新语句的写法!  所以你需要再加一个 boolean的参数(b) 来表示 field2 字段的类型
      

  6.   

    还是不明白 为什么field2为数值类型,b就是true.
      

  7.   

    如果  是数值类型  你的 update 语句应该这样写:
    update table set .... where field = 10;
    如果是 字符类型   你应该这样写
    update table set .... where field = '10';就是一个引号的 差别