2016-10-16 2 views
0

프로젝트의 온라인 음식 주문 시스템을 만들고 있지만 아직 Java를 처음 사용하고 있습니다. 두 클래스가 있습니다. Signin.java 및 기타는 mextable.java입니다. 나는 텍스트 필드 (signin.java의 일부)에 접근하려고 시도하고 있는데, 을 읽고 Mextable.java에서 값을 읽고 그 값을 MexTable.java의 테이블에 삽입한다.클래스 A의 JTextField 입력에서 클래스 B의 데이터베이스에 값을 삽입하는 방법

signin.java의 JTextField에서 값을 읽을 수 있습니다. 나는 또한 그 데이터를 가져 와서 같은 클래스 인 signin.java에있는 login 테이블에 삽입 할 수있다.

내 질문에 정확히 다른 클래스에서 어떻게합니까? 사용자 이름 (signin.java에 JTextField에 입력 된)을 읽은 다음 테이블 orders (Mextable.java의 일부 임)에 삽입하십시오.

ORder Table from MExTable.java

Signin.java 코드

Signin.java Login page Screenshot

(I 코드 단지 메인 라인 추가)

 public class signin extends javax.swing.JFrame { 

     Connection conn; 

     OracleResultSet rs = null; 
     OraclePreparedStatement pst; 

    public signin() { 
    initComponents(); 

    connect(); 
} 
    public void connect() 
    { 
    // connection with database 
     } 
private void loginActionPerformed(java.awt.event.ActionEvent evt) {  

    protected static javax.swing.JTexfield userTF; 

    try{ 

    String pass = passTF.getText().trim(); 
    String user = userTF.getText().trim(); 
    String sql = "select uname,pass" 
      + " from login " 
      + "where uname = '"+user+"' " 
      + "AND pass = '"+pass+"'"; 
    pst = (OraclePreparedStatement) conn.prepareStatement(sql); 
    rs = (OracleResultSet) pst.executeQuery(sql); 

     // remaining code 
    } 

     //catch block 

    }       

을 Mextable.java :

에 액세스 중 그 값이 삽입되지 않기 때문에 Signin.java의 userTF 텍스트 필드의 구성 요소 값이 작동하지 않는 것 같습니다. 이 값 대신 NULL이 삽입됩니다. 이 삽입 쿼리의 나머지 값은 orders 테이블에 삽입됩니다.

private void ConOrd2ActionPerformed(java.awt.event.ActionEvent evt) {           
    try{ 
    signin l = new signin(); 
     l.getComponent(0).getName(); 
     int rows = jTable23.getRowCount(); 
      String user4 = l.userTF.getText().trim(); 
     String sqli = "insert into orders" 
      + "(o_id,item_id, order_name, uname)" 
      + " values (ord_seq.nextval,?,?,'"+user4+"')"; 

      //o_id,item_id,order_name is inserted and uname value is added as  
    //Null instead of the username value in the JTextfield in the Signin page. 

     pst = (OraclePreparedStatement) conn.prepareStatement(sqli); 
     for(int row =0; row < rows; row++) 
     { 
      String item2= (String)jTable23.getValueAt(row, 0); 
      String fooname2= (String)jTable23.getValueAt(row, 1); 
      pst.setString(1, item2); 
      pst.setString(2, fooname2); 
      pst.execute(); 
     } 
     pst.executeUpdate(); 
     conn.commit(); 

    } 

    catch(Exception e) 
    { 
     System.out.println(e); 
    } 
}        
     } 
+0

한 번에 한 가지 질문을하십시오. 너는 무엇을 요구하고 있는가? Signin.java에 대한 코드는 어디에 있습니까? 이 수업이 효과가 없다고 불평 한 이후로 어떻게 도와 드릴까요? –

+0

이미 코드를 추가했습니다. Signin.java의 코드는 코드 블록의 첫 번째 섹션입니다. 나는 값에 접근하는 것이 작동하지 않고 값이 삽입되지 않는다고 말했다. 나머지는입니다. 수업이 잘 진행되고 있습니다. 거기에는 문제가 없습니다. 단지 입력 된'JTexfield' 값 (Signin.java로부터)은 다른 클래스의 MexTable.java에있는 테이블에 삽입되지 않습니다. – nikiii

+0

선생님, 저는 그것을 대담하게 만들었으므로 쉽게 구분할 수 있습니다. – nikiii

답변

0

질문에서 분석가가 할 수있는 한 흐름은 로그인에서부터 다시 시작 가능합니다. 그리고 모든 사용자는 username을 가질 것입니다.이 경우 JTextField 필드를 public static으로 만들고 해당 필드를 mextable 클래스에서 사용할 수 있습니다. 로그인의 클래스에서

공공 정적 JTextField를 발;

그리고 mextable 사용

클래스 name.variablename에 액세스

;

Signin.val;

+0

나는 그것을 public static'JTextField' userTF로 만들었습니다; 그리고 mextable에서 나는 singin l = new singin()과 같이 정상적으로 접근했다. then String sqli = "주문에 삽입" + "(o_id, item_id, order_name, uname)" + "값 (ord_seq.nextval,?,?," "+ l.userTF.getText(). trim(); + " ')"; – nikiii

+0

하지만 아무 것도 열 uname에 대한 orders 테이블을 보여줍니다 – nikiii

+0

정적 필드에 대한 객체를 만들 필요가 없습니다. classname.variable name.p를 사용하십시오. 필드가 입력 가능 클래스에 의해 액세스되기 전에 채워지는지 확인하십시오 –

관련 문제