如何更新表中的列值?

时间:2015-12-03 09:21:54

标签: java

  • 此代码有什么问题?它用相同的最后一个更新所有列值。

    public class  dbconnection {
    java.sql.Connection con;
    java.sql.Statement st;
    ResultSet rs;
    public   EncBean getConnection()throws SQLException{
    EncBean encBean1 = new EncBean(); 
    String v_url= "jdbc:oracle:thin:@192.168.2.138:1522:orcl2";
    String v_username= "scott";
    String v_password = "tiger";
    
        try
        {
    DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
    con = DriverManager.getConnection(v_url,v_username,v_password); 
    System.out.println ("Connection to Oracle database  was Established");
        }
    
    
    catch ( SQLException e) 
    {
     e.printStackTrace();
    }
    return encBean1;
    }
    
    public   EncBean selectRows()
    
    {
     EncBean encBean2 = new EncBean(); 
    try
        {
    
        String SQLselect="select JOB_NAME from job";
        st=con.createStatement();
        rs=st.executeQuery(SQLselect);
    
    while (rs.next()) {
    
        encBean2.setName(rs.getString("JOB_NAME"));
                    }   
    
        }
     catch ( Exception ex ) 
    {
     ex.printStackTrace();
    }
    
    return encBean2;
    }
    
    
    public  void updateRows(String updatedname){
    
    try
    {
    Statement stmt =   con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
    
    ResultSet srs = stmt.executeQuery("select job_name from job " );
    
      while (srs.next()) {
    
      srs.updateString("job_name", updatedname);
      srs.updateRow();
      con.commit();} 
      System.out.println("An existing user was updated successfully!");}
      catch(SQLException err){
      System.out.println(err.getMessage());
      }}}       
    

    这是主要的

    public class mainenc {
    
     public static void main(String[] args) throws Exception{
     dbconnection dbcon = new dbconnection();
     EncBean encbeancon=    dbcon.getConnection();
     EncBean encBean5 = dbcon.selectRows(); 
     enc concatinputs = new enc();  
     EncBean encBeanconcat = concatinputs.funconcat(encBean5.getName());
     EncBean encBean4 =    concatinputs.inputencryption(encBeanconcat.getConcatenatedData());
     String vReserverbin= encBean4.getReversedBinary();
     String  ascistring=  concatinputs.convertBinaryStringToString(vReserverbin);
      dbcon.updateRows(ascistring); 
        }}
    

    此代码有什么问题?它用相同的最后一个更新所有列值。

3 个答案:

答案 0 :(得分:0)

更新方法后,您应该再次编写列表方法。

答案 1 :(得分:0)

尝试举个例子:

 UPDATE tableB
 SET tableB.value , tableA.value, tableB.value)
 WHERE tableA.name = 'Joe'

答案 2 :(得分:0)

很明显:dbcon.updateRows(...)调用了更新方法,该方法完成了这项工作。

但正如Erhan所说,你不能看到结果,因为你实际上没有使用更新的记录,例如至少,如果操作完成,您可以在数据库级别检查它。

但我真的不喜欢你的评论:

  你可以帮我吗?

你需要做自己的任务,并在需要帮助时寻求帮助。但是不要指望别人做你的工作伙伴。