gpt4 book ai didi

java - 无法使用JSP和TOMCAT连接MYSQL数据库

转载 作者:行者123 更新时间:2023-11-29 02:07:25 27 4
gpt4 key购买 nike

我无法使用 Java Server Pages (JSP) 和 Tomcat 连接在 mySQL 中创建的数据库“test”。我收到错误消息“无法连接到数据库”。

我正在使用以下软件规范

  • Tomcat 6.0
  • jdk1.6.0_21
  • MySQL 5.1.49
  • mysql-connector-java-5.1.13-bin

我已经配置了如下环境变量

  • CATALINA_HOME: C:\Program Files\Tomcat 6.0
  • CLASSPATH: C:\Program Files\Tomcat 6.0\lib\servlet-api.jar;C:\Program Files\Tomcat 6.0\lib\jsp-api.jar;C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext\mysql-connector-java-5.1.13-bin.jar.;
  • JAVA_HOME: C:\Program Files\Java\jdk1.6.0_21

我已将 mysql-connector-java-5.1.13-bin jar 文件放在以下两个位置:

  • CATALINE_HOME\lib
  • C:\Program Files\Tomcat 6.0\webapps\myapp\WEB-INF\lib

我目前使用默认用户名“root”和“密码”sohail 连接到 mySQL Server 5.1 当前选择“test”数据库

我正在运行以下代码

<%@ page language="java" import="java.sql.*" errorPage=""%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>Test DB Page</title>
</head>
<body>
<h3>Insert Data INTO MYSQL</h3>
<%
Connection con = null;
PreparedStatement stmt = null;
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "sohail");
stmt = con.prepareStatement("INSERT INTO login (loginID, firstname, lastname, gender, birthday, country, emailAddress) VALUES ('?','?','?','?','?','?','?')");
stmt.setString(1, request.getParameter("loginID"));
stmt.setString(2, request.getParameter("firstname"));
stmt.setString(3, request.getParameter("lastname"));
stmt.setString(4, request.getParameter("gender"));
stmt.setString(5, request.getParameter("Date of Birth"));
stmt.setString(6, request.getParameter("Country"));
stmt.setString(6, request.getParameter("emailAddress"));
int num = stmt.executeUpdate();
System.out.println(num + "records updated");
stmt.close();
con.close();
}
catch (Exception ex) {
out.println("Unable to connect to batabase.");
}
finally {
try {
if (stmt != null)
stmt.close();
}
catch (SQLException e) {}
try {
if (con != null)
con.close();
}
catch (SQLException e) {}
}
%>
Done with new DB
</body>
</html>

谁能解释为什么我无法连接数据库?


更新:我遇到以下异常:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

谢谢大家

问题已通过修复以下 2 个错误得到解决。

1- 不要引用参数,即 ?

2- 删除了重复项,即第 6 号参数

最佳答案

Parameter index out of range (1 > number of parameters, which is 0)

这意味着 preparedStatement.setSomething(1, something) 失败了,因为 1 大于可用参数数量 0 .

con.prepareStatement("INSERT INTO login (loginID, firstname, lastname, gender, birthday, country, emailAddress) VALUES ('?','?','?','?','?','?','?')"

您应该删除那些单引号。您不需要包括它们。 PreparedStatement 会注意正确的引用方式。占位符 ? 应该不加引号。所以:

con.prepareStatement("INSERT INTO login (loginID, firstname, lastname, gender, birthday, country, emailAddress) VALUES (?,?,?,?,?,?,?)"

另见:


也就是说,这不是使用 JDBC 或 JSP 的推荐方式。 Java代码应该是avoided在 JSP 中。此外,CLASSPATH 环境变量被 Tomcat 忽略

关于java - 无法使用JSP和TOMCAT连接MYSQL数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3487219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com