TheFIF
495
2019-09-11 10:04:29
4
141

ajax로 list값 가져오기 질문입니다.



package database;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class DatabaseProcess {
	private static Connection conn;
	private static PreparedStatement pstmt;
	private static ResultSet rsExecuteQuery;
	private static int rsExecuteUpdate;
	// ResultSetMetadata 객체 변수 선언
	private static ResultSetMetaData rsmd;

	public void exit() throws SQLException {
		if (rsExecuteQuery != null)
			rsExecuteQuery.close();
		if (pstmt != null)
			pstmt.close();
		if (conn != null)
			conn.close();
	}// end exit()

	@RequestMapping("process.do")
	public @ResponseBody List<Object> dbProcess(HttpServletRequest request) {
		String query = request.getParameter("query");
		DatabaseConnect dbc = new DatabaseConnect();
		List<Object> column = new ArrayList<Object>();

		try {
			conn = dbc.init(request);
			pstmt = conn.prepareStatement(query);
			rsExecuteQuery = pstmt.executeQuery();
			rsmd = rsExecuteQuery.getMetaData();

			int columnCount = rsmd.getColumnCount();
			for (int i = 1; i <= columnCount; i++) {
				String name = rsmd.getColumnName(i);
				String type = rsmd.getColumnTypeName(i);
				int precision = rsmd.getPrecision(i);
				int nullable = rsmd.isNullable(i);
				int scale = rsmd.getScale(i);
				column.add(name);
				column.add(type);
				column.add(precision);
				column.add(nullable);
				column.add(scale);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				exit();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return column;
	}
}

column.add를 계속 해주고, 마지막에 column을 리턴해줬습니다.



<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SQL-Client</title>

<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script type="text/javascript">
	$(document).ready(function() {
		$('#execute').click(function() {
			var select = $("#select").val();
			var query = $('#contents').val();
			var data = {
				"select" : select,
				"query" : query
			};

			$.ajax({
				url : "process.do",
				dataType : "json",
				type : "POST",
				data : data,
				success : function(column) {
					alert(column);

				},
				error : function(request, status, error) {
					alert("데이터 넘기기 실패");
				}
			});
		});
	});
</script>

</head>
<body>
	<fieldset style="width: 50%">
		<legend>SQL-Client</legend>
		<select id="select" style="height: 40px;">
			<option value="mysql1">MySQL ism</option>
			<option value="mysql2">MySQL ism2</option>
			<option value="oracle1">Oracle ism</option>
		</select>
		<!-- <input type="button" id="choice" value="선택" /> -->

		<table style="border-collapse: collapse;">
			<tr>
				<th style="border-style: hidden;"><input type="text"
					value="쿼리입력"
					style="width: 100%; height: 40px; border: 0; font-size: 30px;" /></th>
			</tr>
		</table>

		<textarea rows="10" cols="80" id="contents"></textarea>
		<input type="button" id="execute" value="실행" />

	</fieldset>
</body>
</html>

ajax에서 succes시 column을 받아 alert로 찍어보면 아래처럼 나옵니다.


id, name, birth가 getColumnName을 사용하여 가지고 온것인데, 이것만 따로 분리해서 쓰고싶습니다.


ajax부분에서 어떻게 처리해야 할까요? (column.add 한건 다 사용해야 합니다.)




0
0
  • 답변 4

  • 따비
    22
    2019-09-11 10:12:00

    column[0].id 이렇게 한번??

    0
  • minarai
    2k
    2019-09-11 10:23:14

    윗분처럼
    column.name
    이런식으로 표기해서 확인해보시구
    f12 디버그창 열어서 변수 안에 내용물이 어떻게 되어있는지 확인 한번 해보는걸 추천합니다.

    0
  • TheFIF
    495
    2019-09-11 10:48:37

    답변 달아주셔서 감사합니다!


    그렇게 다해봤는데 안가져 오네요..ㅠㅠ

    0
  • 따비
    22
    2019-09-11 11:26:57

    자바 컨트롤러 쪽에서 값이 재대로 나오는지 확인좀 해주실 수 있나요?

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.