Mysql executeUpdate不工作
我似乎无法执行我准备好的语句。对于输出消息,我得到的是“0航班成功更新”,而不是“1航班成功更新”。我的数据库连接(在db.Conn包中)正在工作,Eclipse本身没有可见的错误Mysql executeUpdate不工作,mysql,database,eclipse,jsp,prepared-statement,Mysql,Database,Eclipse,Jsp,Prepared Statement,我似乎无法执行我准备好的语句。对于输出消息,我得到的是“0航班成功更新”,而不是“1航班成功更新”。我的数据库连接(在db.Conn包中)正在工作,Eclipse本身没有可见的错误 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="java.sql.*, dbConn.*" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@page import="java.sql.*, dbConn.*" %>
String flightid=request.getParameter("id");
String aircraftid=request.getParameter("aircraftid");
String OAirport=request.getParameter("OAirport");
String OCountry=request.getParameter("OCountry");
String DAirport=request.getParameter("DAirport");
String DCountry=request.getParameter("DCountry");
String ecost1=request.getParameter("ecost");
String bccost1=request.getParameter("bccost");
String fccost1=request.getParameter("fccost");
String DDate=request.getParameter("DDate");
String DTime=request.getParameter("DTime");
String ADate=request.getParameter("ADate");
String ATime=request.getParameter("ATime");
String FT=request.getParameter("FT");
String DR=request.getParameter("DiscountRate");
Connection conn=database.getConnection();
String sql="Update flightschedule F ,promotion P set F.aircraftid=?, F.OAirport=?,F.OCountry=?,F.DAirport=?,F.DCountry=?, F.ECost=?, F.BCcost=?,F.FCcost=?, F.DDate=?,F.DTime=?,F.ADate=?,F.ATime=?,F.Flighttime=?, P.DiscountRate=? where F.flightid=P.flightid and F.flightid=? ";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1, flightid);
pstmt.setInt(2, Integer.parseInt(aircraftid));
pstmt.setString(3, OAirport);
pstmt.setString(4, OCountry);
pstmt.setString(5, DAirport);
pstmt.setString(6, DCountry);
pstmt.setString(7, ecost1);
pstmt.setString(8, bccost1);
pstmt.setString(9, fccost1);
pstmt.setString(10, DDate);
pstmt.setString(11, DTime);
pstmt.setString(12, ADate);
pstmt.setString(13, ATime);
pstmt.setString(14, FT);
pstmt.setString(15,DR);
int count=pstmt.executeUpdate();
out.println(count+ " flight successfully updated");
conn.close();
%>
String flightid=request.getParameter(“id”);
字符串aircraftid=request.getParameter(“aircraftid”);
字符串OAirport=request.getParameter(“OAirport”);
字符串ocontry=request.getParameter(“ocontry”);
字符串DAirport=request.getParameter(“DAirport”);
字符串dcontry=request.getParameter(“dcontry”);
字符串ecost1=request.getParameter(“ecost”);
字符串bccost1=request.getParameter(“bccost”);
字符串fccost1=request.getParameter(“fccost”);
字符串DDate=request.getParameter(“DDate”);
字符串DTime=request.getParameter(“DTime”);
字符串ADate=request.getParameter(“ADate”);
字符串ATime=request.getParameter(“ATime”);
字符串FT=request.getParameter(“FT”);
字符串DR=request.getParameter(“discentrate”);
Connection conn=database.getConnection();
String sql=“更新飞行计划F,促销P集合F.aircraftid=?,F.OAirport=?,F.ocCountry=?,F.DAirport=?,F.dcCountry=?,F.ECost=?,F.BCcost=?,F.FCcost=?,F.DDate=?,F.DTime=?,F.ATime=?,F.Flighttime=?,P.DiscountRate=?其中F.flightid=P.flightid和F.flightid=?”;
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,flightid);
pstmt.setInt(2,整数.parseInt(aircraftid));
pstmt.设置管柱(3,OAirport);
pstmt设置管柱(4,O国家);
pstmt固定管柱(5,DAirport);
pstmt.设置管柱(6,数据国家);
pstmt设置管柱(7,ecost1);
pstmt设置管柱(8,bccost1);
pstmt.设置管柱(9,fccost1);
pstmt.setString(10,DDate);
pstmt.setString(11,DTime);
pstmt.setString(12,ADate);
pstmt.setString(13,定时);
pstmt固定管柱(14英尺);
pstmt固定管柱(15,DR);
int count=pstmt.executeUpdate();
out.println(计数+“航班成功更新”);
康涅狄格州关闭();
%>
以下是我的两个数据库:
我有一个外键FlightID,它来自于引用FlightSchedule的航班ID的促销
p.S我知道MVC架构,但我想在使用servlet之前先解决这个问题。如果您对
PreparedStatement
参数的排序/设置不正确,请尝试以下操作:
pstmt.setInt(1, Integer.parseInt(aircraftid));
pstmt.setString(2, OAirport);
pstmt.setString(3, OCountry);
pstmt.setString(4, DAirport);
pstmt.setString(5, DCountry);
pstmt.setString(6, ecost1);
pstmt.setString(7, bccost1);
pstmt.setString(8, fccost1);
pstmt.setString(9, DDate);
pstmt.setString(10, DTime);
pstmt.setString(11, ADate);
pstmt.setString(12, ATime);
pstmt.setString(13, FT);
pstmt.setString(14,DR);
pstmt.setString(15, flightid);
参数将根据您使用的编号进行替换。例如,查询中的第一个
?
,设置F.aircraftid=?
,将成为pstmt.setString(1,flightid)代码>,这不是您想要的。因此,请正确地重新分配参数。