特定のユーザーがドロップダウン メニューから選択した特定の製品を購入できるようにする、学校向けの単純な Web ベースのアプリケーションを構築しています。ユーザーがドロップダウン メニューから選択した製品をクリックして購入するたびに、この製品は購入済みアイテム テーブルに格納され、同時に製品と呼ばれる別のテーブルから削除されます。私が知っていることから、これを行うには、ユーザー、製品、購入の 3 つのテーブルが必要です。購入テーブルには、購入者の #1 と #2 の外部キーを持つ 2 つの列が必要です。購入した製品。私はこの問題を解決したと思っていましたが、私の Glassfish サーバーは私に次のエラーをスローし続けます:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
子行を追加または更新できません: 外部キー制約が失敗します
(`webprodaja`.`kupljeno`, CONSTRAINT `kupljeno_ibfk_1` FOREIGN KEY (`id`) REFERENCESusers
(`id` ) )))
問題のテーブルと外部キーは次のとおりです。
テーブル「ユーザー」:
id | name
1 | Ivan
2 | Beka
3 | Ogi
表 'proizvodi' (eng. products):
id | name
1 | kafa
2 | jafa
3 | ratluk
テーブル 'kupljeno' (eng. purchase):
id | name | proizvod
2 | Beka | 3
3 | Ogi | 2
テーブル「kupljeno」にも 2 つの外部キーがあります。
「id」列に配置され、テーブル「users」とその列「id」を参照するもの。
「proizvod」列に配置され、テーブル「proizvodi」とその列「id」を参照する別のもの。
だから私がやろうとしているのは、購入者が選んだ製品を削除し、その名前を「proizvod」列から削除して、同じ製品を「kupljeno」列に入れることです。しかし、購入して詳細を「kupljeno」列に保存することはできましたが、何らかの理由で、「proizvod」列で購入中の製品を削除するどころか、これを行うことができなくなりました。
また、価値のある完全な index.jsp コードは次のとおりです。
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/webprodaja","root","");
Statement st = conn.createStatement();
// if(request.getParameter("add")!=null){
ResultSet rs = st.executeQuery("select * from users");
%>
<form action="index.jsp" method="post">
<select name="user">
<%
while(rs.next())
{
String name=rs.getString(2);
String id = rs.getString(1);
%>
<option value="<%=name%>" ><%=name%></option>
<%
}
%>
</select>
<%
ResultSet rs1 = st.executeQuery("select * from proizvodi");
%>
<select name="proizvod">
<%
while(rs1.next())
{
String name1=rs1.getString(2);
String id1 = rs1.getString(1);
%>
<option value="<%=id1%>" ><%=name1%></option>
<%
}
%>
</select>
<input type="submit" name="add" value="buy"/>
</form>
<%
if(request.getParameter("add")!=null)
{
String user = request.getParameter("user");
String proizvod = request.getParameter("proizvod");
st.execute("insert into kupljeno(id, name, proizvod) values (null, '"+user+"', "+proizvod+")");
}
%>
<%-- <form action="index.jsp" method="post">
<input type="submit" name="add" value="buy">
</form> --%>
</body>
</html>