Java ORA-04054:数据库链接GMAIL.COM不存在
我需要学院项目Java web与hibernate和oracle数据库的帮助,这必须编辑之前添加的用户,这些用户有: 邮件主键 通过 typeuser.iduser FK 添加和删除它工作但不编辑,错误为: javax.servlet.ServletException:java.sql.SQLSyntaxErrorException:ORA-04054:数据库链接GMAIL.COM不存在Java ORA-04054:数据库链接GMAIL.COM不存在,java,sql,oracle,jdbc,Java,Sql,Oracle,Jdbc,我需要学院项目Java web与hibernate和oracle数据库的帮助,这必须编辑之前添加的用户,这些用户有: 邮件主键 通过 typeuser.iduser FK 添加和删除它工作但不编辑,错误为: javax.servlet.ServletException:java.sql.SQLSyntaxErrorException:ORA-04054:数据库链接GMAIL.COM不存在 <% //CONECTANOD A LA BASE DE DATOS:
<%
//CONECTANOD A LA BASE DE DATOS:
Class.forName("oracle.jdbc.OracleDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "C##PORTA", "oracle");
String id = request.getParameter("correo");
PreparedStatement stm = con.prepareStatement(id);
String Query = "select * from usuario where correo=" + id;
PreparedStatement ps;
ResultSet rs = stm.executeQuery(Query);
while (rs.next()) {
%>```
我已经尝试过使用预先准备好的声明,但我认为我做得不对
邮件不需要编辑。只有用户类型和密码需要它,但在按下编辑按钮的那一刻,它向我显示gmail.com不存在错误
<%
//CONECTANOD A LA BASE DE DATOS:
Class.forName("oracle.jdbc.OracleDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "C##PORTA", "oracle");
String id = request.getParameter("correo");
PreparedStatement stm = con.prepareStatement(id);
String Query = "select * from usuario where correo=" + id;
PreparedStatement ps;
ResultSet rs = stm.executeQuery(Query);
while (rs.next()) {
%>```
您没有使用正确的参数调用正确的方法。应该是这样的:
String id = request.getParameter("correo");
String query = "select * from usuario where correo= ?";
PreparedStatement stm = con.prepareStatement(query);
stm.setString(1, id );
ResultSet rs = stm.executeQuery();
OldProgrammer为您提供了正确的方法。如果您正确使用PreparedStatement,它将正确处理引用,并防止攻击
您收到模糊错误消息的原因是,在连接SQL语句后,它很可能看起来像这样:
select * from usuario where correo=someone@gmail.com
由于电子邮件地址没有被引用,SQL解析器不会将其识别为字符串文字。相反,它将其视为db链路,如中所述
创建数据库链接后,可以在SQL语句中通过在表或视图名称后附加@dblink来引用其他数据库上的表和视图
由于没有创建名为gmail.com的数据库链接,因此该操作失败。使用PreparedStatement传递值。不要将参数连接到SQL查询中。