2017-11-26 18 views
-5

나는 java에 익숙하지 않고 mysql 데이터베이스에 연결 한 다음 테이블 이름을 지정하는 코드를 작성하려고한다. 입력으로 프로그램은 특정 테이블의 열 이름과 유형을 검색 한 다음이 출력을 json 형식으로 인쇄합니다 ..... 이것은 작성한 코드입니다. ......... 예상 출력된다 ...... { "테이블 _": "직원" "데이터베이스": "MYSQL, '열'[ { "COLUMN_NAME " : "EID" "column_data_type": "문자열" }, { "COLUMN_NAME": "ENAME" "column_data_type": "INT" }, { "COLUMN_NAME": "나이" "column_data_type": "INT" }내 자바 프로그램이 mysql 데이터베이스에 액세스하여 json 형식으로 테이블의 설명 (열 이름과 그 유형)을 인쇄해야한다.

] 

}

import java.io.FileWriter; 
import java.sql.*; 
import java.util.*; 
import javax.json.*; 
import org.json.*; 


public class MySqlConn 
{ 
    Collection conn=null; 
    public JSONObject getTableColumns(String tableName) 
    { 
     int i=1; 
     Statement st = conn.createStatement(); 
     ResultSet res = st.executeQuery("Select * from "+tableName); 
     ResultSetMetaData rsmd = res.getMetaData(); 
     JSONObject obj; 
     JsonArray array = new JsonArray(); 
     try 
     { 
      while(i < rsmd.getColumnCount()) 
      { 
       //create new json object 
       obj = new JSONObject(); 
       obj.put("Column name", rsmd.getColumnName(i)); 
       obj.put("Column type", rsmd.getColumnType(i)); 
       array.add(obj); 
       i++; 
      } 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return obj; 
} 

public static void main(String[] args) 
{ 
    String url = "jdbc:mysql://localhost:3306/prj?useSSL=false"; 
    String driver = "com.mysql.jdbc.Driver"; 
    String userName = "root"; 
    String password = "password"; 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter a tablename"); 
    String tname=sc.nextLine(); 
    sc.close(); 
    try 
    { 
     Class.forName(driver).newInstance(); 
     conn = DriverManager.getConnection(url,userName,password); 
     System.out.println("Connected to the database"); 
     getTableColumns(tname); 
     FileWriter file = new FileWriter("output.json"); 
     //write data to file 
     file.write(array.toJson()); 
     //print results in console 
     System.out.println("Successfully Copied JSON Object to File..."); 
     System.out.println("\nJSON Object: " + obj); 
     //close file 
     file.close(); 
     System.out.println("Disconnected from database"); 
    } 
    catch (Exception e) 
    { 
    e.printStackTrace(); 
    } 

    } 
} 
+1

실제 질문은 무엇입니까 아래

확인 코드? 나는 하나도 보지 못한다. –

+0

내 자바 프로그램은 mysql 데이터베이스에 액세스해야하며 json 형식의 테이블 설명을 인쇄해야합니다. 열 이름과 데이터 유형을 출력으로 얻는 방법을 이해할 수는 없지만 json 형식으로 설명합니다. – Abhishek

+0

그래서 모든 테이블 이름, 열 이름 및 유형을 json 형식으로 저장 하시겠습니까? –

답변

0

내가 JSON 파일

가져 오기 라이브러리 아래에 몇 가지 tips.Check을 줄 것이다

import org.json.simple.JsonObject; 
import org.json.simple.JsonArray; 

루프 테이블에서 모든 열 이름과 유형을 가져오고 당신이

try{ 

    while(rs.next()){ 
    //create new json object 
    obj = new JsonObject(); 
    obj.put("Column name", rs.getColumnName()); 
    obj.put("Column type", rs.getColumnType()); 

    array.add(obj); 
    } 

쓰기 JSON 객체 전에 생성 된 객체에 저장하는 동안 데이터 그런

JsonObject obj; 
JsonArray array = new JsonArray(); 

를 추가하는 JSON 개체 만들기 FileWriter 클래스를 사용하여 파일

FileWriter file = new FileWriter("output.json"); 

//write data to file 
file.write(array.toJson()); 
//print results in console 
System.out.println("Successfully Copied JSON Object to File..."); 
System.out.println("\nJSON Object: " + obj); 

//close file 
file.close(); 
}catch(IOException e){ 
    System.out.println(e); 
} 

코드를 그쪽으로 수정하십시오. t 예제와 괜찮을 것입니다.

import java.io.FileWriter; 
import java.sql.*; 
import java.util.*; 
import javax.json.*; 
import org.json.*; 


public class MySqlConn 
{ 
    Collection conn=null; 
    public static JsonArray getTableColumns(String tableName) 
    { 
     int i=1; 
     Statement st = conn.createStatement(); 
     ResultSet res = st.executeQuery("Select * from "+tableName); 
     ResultSetMetaData rsmd = res.getMetaData(); 
     JSONObject obj; 
     JsonArray array = new JsonArray(); 
     try 
     { 
      while(i < rsmd.getColumnCount()) 
      { 
       //create new json object 
       obj = new JSONObject(); 
       obj.put("Column name", rsmd.getColumnName(i)); 
       obj.put("Column type", rsmd.getColumnType(i)); 
       array.add(obj); 
       i++; 
      } 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return array; 
} 

public static void main(String[] args) 
{ 
    String url = "jdbc:mysql://localhost:3306/prj?useSSL=false"; 
    String driver = "com.mysql.jdbc.Driver"; 
    String userName = "root"; 
    String password = "password"; 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter a tablename"); 
    String tname=sc.nextLine(); 
    sc.close(); 
    try 
    { 
     Class.forName(driver).newInstance(); 
     conn = DriverManager.getConnection(url,userName,password); 
     System.out.println("Connected to the database"); 
     JsonArray array = getTableColumns(tname); 
     FileWriter file = new FileWriter("output.json"); 
     //write data to file 
     file.write(array.toJson()); 
     //print results in console 
     System.out.println("Successfully Copied JSON Object to File..."); 
     System.out.println("\nJSON Object: " + obj); 
     //close file 
     file.close(); 
     System.out.println("Disconnected from database"); 
    } 
    catch (Exception e) 
    { 
    e.printStackTrace(); 
    } 

    } 
} 
+0

코드를 업데이트했습니다. 진행 방법에 대해 안내해 주실 수 있습니까? – Abhishek