복붙노트

[SQL] 어떻게 자바 준비된 문장 삽입에 대한 테이블 이름 변수를 사용하여 [중복]

SQL

어떻게 자바 준비된 문장 삽입에 대한 테이블 이름 변수를 사용하여 [중복]

나는 일괄 INSERT 쿼리의 시리즈를 구성하기 위해 자바 PreparedStatement 오브젝트를 사용하고 있습니다. 쿼리 문은 형식입니다 ...

String strQuery = "INSERT INTO ? (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);";

... 두 필드 값과 변수 TABLENAME가되도록 (즉. I 각 인서트 다른 하나로 지향 될 동일한 열 형식으로 여러 개의 테이블을 가지고). 내가 제거하면 나는 일에이 실행을 얻을 수있는 "?" 요구 사항이 직전 사용하여 배치 쿼리를 실행에 내가 채울 변수 남아 있도록 TABLENAME 변수와 하드 코드 있지만, 각 준비된 명령문은 다른 테이블에 삽입됩니다 ...

stmt.setString(1, "tableName1");

어떻게이 동적 변수하시기 바랍니다하자 수 있습니까?

해결법

  1. ==============================

    1.당신은 할 수 없습니다. 당신은 및 String.format와 문자열 연결 / 자리로 SQL을 구성해야합니다. 준비된 명령문이없는 테이블 이름에 대한 열 값입니다.

    당신은 할 수 없습니다. 당신은 및 String.format와 문자열 연결 / 자리로 SQL을 구성해야합니다. 준비된 명령문이없는 테이블 이름에 대한 열 값입니다.

  2. ==============================

    2.당신은 테이블 이름 대신 자리 표시자를 사용하여 다음 TABLENAME와 그 교체 할 수 있습니다.

    당신은 테이블 이름 대신 자리 표시자를 사용하여 다음 TABLENAME와 그 교체 할 수 있습니다.

    String strQuery = "INSERT INTO $tableName (col1, col2, col3, col4, col5)
                       VALUES (?,?,?,?,?,?);";
    

    u는 TABLENAME을 알게 때 교체

    String query =strQuery.replace("$tableName",tableName);
    stmt =conn.prepareStatement(query);
    
  3. ==============================

    3.하나 개의 대안은 및 String.format 수 :

    하나 개의 대안은 및 String.format 수 :

    EG

    String sql = String.format("INSERT INTO $1%s (col1, col2, col3, (etc)",  myTablename);
    
  4. ==============================

    4.테이블 이름은 매개 변수로 사용할 수 없습니다. 그것은 하드 코딩해야합니다. 같은 것을보십시오 :

    테이블 이름은 매개 변수로 사용할 수 없습니다. 그것은 하드 코딩해야합니다. 같은 것을보십시오 :

    String tableName = "tableName1";
    String strQuery = "INSERT INTO " + tableName + " (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);";
    
  5. ==============================

    5.원래 문자열에 추가해야합니다 :

    원래 문자열에 추가해야합니다 :

    String tableName = "some_table_name";
    // some other code
    String strQuery = "INSERT INTO " + tableName + " (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);";
    

    당신이 strQuery에서 세미콜론가 필요하십니까? (당신이 할 수 있습니다, 그것은 단지 :-) 나에게 조금 이상한 모양)

  6. from https://stackoverflow.com/questions/11312155/how-to-use-a-tablename-variable-for-a-java-prepared-statement-insert by cc-by-sa and MIT license