안드로이드 개발 질문/답변
(글 수 45,052)
///////////////JSP 파일 부분/////////////////////
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
import = "java.sql.*"
import = "com.sk.db.*"
%><%
String root = request.getContextPath();
request.setCharacterEncoding("UTF-8");
int lkey = 3; String p_id = request.getParameter("p_num").trim();
String part = request.getParameter("part").trim();
int year = Integer.parseInt(request.getParameter("year").trim());
int month = Integer.parseInt(request.getParameter("month").trim());
int day = Integer.parseInt(request.getParameter("day").trim());
int hour = Integer.parseInt(request.getParameter("hour").trim());
int accu = 1;
/*
String p_id = "123456789";
String part = "성형외과";
int year = 2012;
int month = 6;
int day = 27;
int hour = 15;
int accu = 1;
*/
String tmp_value = part + String.valueOf(year) + String.valueOf(month)
+ String.valueOf(day) + String.valueOf(hour);
String DBp_id = "";
String DBpart = "";
int DByear;
int DBmonth;
int DBday;
int DBhour;
int DBaccu = 1;
String DBtmp_value = "";
DBController dbcon = new DBController();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sqlDB = "";
String sqlInsert = "";
String sqlForward = "";
int cnt=3;
try {
conn = dbcon.makeConnection();
sqlDB += "SELECT * \n";
sqlDB += "FROM res_list";
pstmt = conn.prepareStatement(sqlDB);
rs = pstmt.executeQuery(); while(rs.next()) {
DBp_id = rs.getString("p_num");
DBpart = rs.getString("part");
DByear = rs.getInt("year");
DBmonth = rs.getInt("month");
DBday = rs.getInt("day");
DBhour = rs.getInt("hour");
DBaccu = rs.getInt("accu");
DBtmp_value = DBpart + String.valueOf(DByear) + String.valueOf(DBmonth)
+ String.valueOf(DBday) + String.valueOf(DBhour);
if(tmp_value.equals(DBtmp_value)) {
accu = ++DBaccu;
if(accu > lkey) {
accu = lkey;
}
} ////////// 환자가 예약시 lkey(병원 자체 예약 최대 인원 수)값에 다다를 경우 예약불가시간에 추가
if(accu==lkey) {
sqlInsert = "INSERT INTO res_full(part, year, month, day, hour) \n";
sqlInsert += "VALUES(?, ?, ?, ?, ?)";
pstmt = conn.prepareStatement(sqlInsert);
int idx = 0;
pstmt.setString(++idx, part);
pstmt.setInt(++idx, year);
pstmt.setInt(++idx, month);
pstmt.setInt(++idx, day);
pstmt.setInt(++idx, hour);
pstmt.executeUpdate();
}
/////////////////////////////////////////////////////////////////////
}
///////////////////// MMS에서 넘어온 값을 병원DB서버로 전달///////////////////////
sqlForward = "INSERT INTO res_list(p_num, part, year, month, day, hour, accu) \n";
sqlForward += "VALUES(?, ?, ?, ?, ?, ?, ?)";
pstmt = conn.prepareStatement(sqlForward);
int idx = 0;
pstmt.setString(++idx, p_id);
pstmt.setString(++idx, part);
pstmt.setInt(++idx, year);
pstmt.setInt(++idx, month);
pstmt.setInt(++idx, day);
pstmt.setInt(++idx, hour);
pstmt.setInt(++idx, accu);cnt = pstmt.executeUpdate();
////////////////////////////////////////////////////////////////////////////////////
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBController.close(conn, pstmt, rs);
}%>
<html> <body> string <%=p_id%> string <%=part%> string <%=year%> string <%=month%> string <%=day%> string <%=hour%> SQLDB <%=sqlDB%> SQLinsert <%=sqlInsert%> SQLForward <%=sqlForward%> cnt = <%=cnt%> </body> </html>
/////////////////////////안드로이드 내부 JAVA코드////////////////
public class ParseAction {
public void SendPostData() {
try {
System.out.println("sendpost executing");
HttpClient client = new DefaultHttpClient();
HttpPost httppost = new HttpPost(
"http://mms.java2u.co.kr/finproject/insertDB.jsp");// TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
// String phone = tm.getLine1Number();
List params = new ArrayList();
params.add(new BasicNameValuePair("p_num", "+82 2-518-6080"));
params.add(new BasicNameValuePair("part", "외과"));
params.add(new BasicNameValuePair("year", "2012"));
params.add(new BasicNameValuePair("month", "6"));
params.add(new BasicNameValuePair("day", "27"));
params.add(new BasicNameValuePair("hour", "14"));
UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params,
HTTP.UTF_8);
httppost.setEntity(ent);
HttpResponse responsePOST = client.execute(httppost);HttpEntity resEntity = responsePOST.getEntity();
if (resEntity != null) {
Log.i("RESPONSE", EntityUtils.toString(resEntity));
} } catch (Exception ex) {
Log.e("SampleHTTPClient", "Exception in processing response.", ex);
}
}
}
부득이하게 소스의 거의 전체부분을 다 올렸습니다.
프로젝트를 하다가 안드로이드와 오라클 서버와의 연동에서 너무 답답해서 이렇게 질문을 올립니다.
뒷부분에 첨부한 안드로이드 내부 java파일에서 Arraylist형태로 파라미터 값을 아파치서버의 jsp파일로 접근해서 post방식의 리퀘스트를
날리고 JSP파일에서는 request.getParameter 메소드로 값을 받아들인 후에 JDBC를 통해 쿼리문을 실행시키는데요
안드로이드에서 실행 시킨 후 response값을 확인해보면 분명히 파라미터 값은 전달이 되어있는 상태입니다. 하지만
최종적으로 res_list 디비 테이블을 확인해보면 전달한 값이 입력이 안됩니다.
완전히 다른 프로젝트에서 실행시키는 파일들이라 jsp파일의 콘솔값을 확인할 방법도 잘 모르고, 오로지 안드로이드의 response값만으로
결과를 확인하는데요, 분명히 에러코드는 뜨지 않고 멀쩡하게 <html>태그가 잘 출력됩니다.
단지 문제라면 executeUpdate를 실행 후에 반환 값이 cnt 변수에 전달되도록 하게 되어있는데 1이나 0으로 세팅되지 않고 초기값으로
정해놓은 3이 출력된다는 점이 이상합니다.
제가 jsp의 파일전환순서를 잘 몰라서 그런건지 맨 마지막에 있는 insert쿼리문을 정상적으로 실행시키려면 여기에서 뭐가 부족한걸까요?
아무리 찾아봐도 답이 안나와서 게시판에 올립니다. 답변 부탁드려요. ㅠㅠ



