일단 테이블이 equipment이고 애트리뷰트 네개에 equip_id 기본키, equip_type 외래키야. 네개 전부 NOT NULL이고
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Equipment insert Page</title>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<% String Equip_type = request.getParameter("Equip_type"); %>
<br> 생성할 Equipment 를 입력하세요.<br>
<form name="form1" action="Equipment_insert_done.jsp" method="post">
<p> Equip_id: <input type="text" name="Equip_id"><br><br>
Equip_type: <input type="text" name="Equip_type"><br><br>
Maintenance_start: <input type="text" name="Maintenance_start"><br><br>
Maintenance_finish: <input type="text" name="Maintenance_finish"><br><br>
<input type="submit" name="formbutton1" value="보내기"> </p>
</form>
<p> </p>
</body>
</html>
이게 INSERT페이지고 여기서 입력한 자료를 밑에거에서 DB에 올리거든?
<%@ 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>Insert Equipment done Page</title>
</head>
<body>
<%@ page import = "java.sql.*, java.util.*" %>
<%
String Equip_id=request.getParameter("Equip_id");
String Equip_type=request.getParameter("Equip_type");
String Maintenance_start=request.getParameter("Maintenance_start");
String Maintenance_finish=request.getParameter("Maintenance_finish");
Class.forName("com.mysql.jdbc.Driver");
Connection conn = null;
PreparedStatement pstmt = null;
StringBuffer sql = new StringBuffer();
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbfinalproject", "root", "");
pstmt = conn.prepareStatement("insert into equipment (Equip_id, Equip_type, Maintenance_start, Maintenance_finish) values(?,?,?,?) ");
pstmt.setString(1, Equip_id);
pstmt.setString(2, Equip_type);
pstmt.setString(3, Maintenance_start);
pstmt.setString(4, Maintenance_finish);
pstmt.executeUpdate();
out.println("새 Equipment 가 입력되었습니다.");
} catch (SQLException e) {
out.println("데이터베이스 처리 문제 발생");
} finally {
if(pstmt != null)
try {
pstmt.close();
} catch (Exception e) {}
if(conn != null)
try {
conn.close();
} catch (Exception e) {}
}
%>
<a href="Equipment_insert.jsp">계속 등록</a>
<a href="Equipment.jsp">Equipment 페이지로</a>
</body>
</html>
원래 내 예상으로는 네 애트리뷰트중 하나라도 없거나, 외래키 제약조건 어긋나면 다 예외조건으로 catch되길 바랬거든?
근데 예외조건이 외래키 제약조건 말곤 전부 쌩까... 심지어는 기본키에 아무것도 안써도 DB에 등록됨 -0-... 도와줘형들
primary키에 암것도 안써도 등록되는게 말이되냐? 처음한번은 암것도 안써도 되겠지만 2번째부터는 안될거다.
int cnt = pstmt.executeUpdate(); //정 안되면 처리 결과 개수 받아서 쓰로우 해버렷
좀만 자세히 설명해주라 부탁한다
초보리버서 말대로 처음한번은 암것도 안써도 되는데 2번재부터는 안된다
초보리버서 말대로 Primary키에 암것도 안스면 처음한번은 되고 2번재부터는 안되거든? 근데 난 처음부터 안되고싶어...어떡해?
그리고 NOTNULL인 뒤에 두개 애트리뷰트는 왜 암것도 안써도 등록되는거야?
백왕 무슨얘긴지 알겠는데 그럼 어떻게 해결해?
처음 한번 되는것도 허용하기 시르면 primary키에 null허용 옵션을 빼주면된다.
필드가 숫자이거나 디폴드값이 있으면 등록된다.
참 그리고 conn 락했으니깐 conn.commit(); 랑 conn.rollback(); 해야되자너? 이거 어디다 넣는거야?
초보리버서야 옵션 빼는거 MySQL에서 하는거 맞지 않어? 근데 이미 NOT NULL로 TABLE생성한건데;;
백왕 좀더 자세히설명해줘
그냥 미리 if문으로 검증하고 값없으면 쓰로우해버렷
일단 감사의 의미로 3000원 넣었다 잔금받을래면 더 자세히 설명해줘
시발 니들 프랑스어하는거같어ㅠㅠ이해가안됨
ㅇㅇ 이해는 되는데 그걸 어떻게 방지하냐는거지. 난 안그랬으면 좋겠어
입력 값에 equalsIgnorecase 비교를 \"\" <--이놈으로 필터링 해서 검증해 [i] 이거말하는거지. 어디다 어떻게 넣어야되는지 예문좀 써줘
난 그게 무슨뜻인지 모른다고 ㅠㅠ 입력 스트링이 뭐고, 나머지 동작 서술이 뭐고...
너 진짜 내가 아무것도 안믿고 선금까지 쐈는데 무성의하게 할거냐 진짜 도와주는셈치고 좀 잘좀해줘라
그니깐 저걸 어디다가 넣냐고, 걍 코딩해서주라 제발응? 위에꺼복사해서 비교문 넣고 올려주면되자너