2013-03-23 4 views
0

Я пишу программу, которая будет принимать идентификатор студента и проверить, существует ли этот идентификатор в таблице mysql. Если он существует, я хотел бы взять всю строку, в которой он существует, и скопировать эту строку в другую таблицу. В настоящее время программа просто скопирует все строки в таблицу в другую. Любая помощь оценивается. Я добавил фрагмент кода ниже.Вставка информации из одной таблицы mysql в другую

try { 
    String compareText = IDField.getText().trim(); 

    if(compareText.length() > 0){ 
     Class.forName("com.mysql.jdbc.Driver"); 
     conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/simlab","root","password"); 
     System.out.println("Connected to database"); 

     Statement stmt1  = conn.createStatement(); 
     ResultSet rs1  = stmt1.executeQuery("select * from students where LUID='"+IDField.getText()+"' "); 

     boolean isPresent = rs1.next(); 

     if (isPresent) 
     { 
      Class.forName("com.mysql.jdbc.Driver"); 
      conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/simlab","root","password"); 
      System.out.println("Connected to database"); 

      int rows = stmt1.executeUpdate("INSERT INTO skills(ID_Student,LUID_Student)SELECT ID, LUID FROM students"); 

      if (rows == 0) 
      { 
       System.out.println("Don't add any row!"); 
      } 
      else 
      { 
       System.out.println(rows + " row(s)affected."); 
       conn.close(); 
      } 

      //System.out.println("Already exists!!"); 
     } 
+0

ли проживаете обе таблицы в той же базе данных, или они в разных базах данных, как подсказывает название? – Geier

+0

Обе таблицы находятся в одной базе данных. Спасибо что подметил это. – user2188777

ответ

1

Вы все могли бы сделать это в одном операторе SQL:

INSERT INTO <Dest-Table> 
(SELECT * FROM <Src-Table> WHERE ID=?); 

Он будет копировать только те строки, которые существуют.

+0

Спасибо. Я рассмотрю этот метод. – user2188777

0

Я подозреваю, что это из-за эту линию:

int rows = stmt1.executeUpdate("INSERT INTO skills(ID_Student,LUID_Student)SELECT ID, LUID FROM students"); 

Как, если эта строка обрабатывается, то SELECT оператор не имеет WHERE положения, и, следовательно, получить все строки, и, следовательно, вставить все.

+0

Спасибо. Я рассмотрю предложение WHERE. – user2188777

0

С Подготовленные заявления

 String sql = "INSERT INTO abc" 
       + "(SELECT id1,id2 FROM pqr)"; 

     ps1 = con.prepareStatement(sql); 


     int rs = ps1.executeUpdate(); 

     if (rs > 0) { 

      update = true; 

     } else { 
      update = false; 
     } 

    } catch (Exception ex) { 

     ex.printStackTrace(); 
    } finally { 
     try { 
      if (ps1 != null) { 
       ps1.close(); 
       ps1 = null; 
      } 
      if (con != null) { 
       con.close(); 
       con = null; 
      } 
     } catch (Exception e) { 

     } 
    } 
    return update; 
Смежные вопросы