Java未连接到数据库

Java未连接到数据库,java,mysql,jdbc,Java,Mysql,Jdbc,我正在尝试让我的java代码连接到数据库。我发誓它几个小时前就接通了,但突然就不接通了。我已重新安装、重新启动xampp、eclipse我的笔记本电脑。我甚至卸载并重新安装了mysql。 这是我的.java文件: import java.sql.DriverManager; import com.mysql.jdbc.Connection; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; public class Connect_

我正在尝试让我的java代码连接到数据库。我发誓它几个小时前就接通了,但突然就不接通了。我已重新安装、重新启动xampp、eclipse我的笔记本电脑。我甚至卸载并重新安装了mysql。

这是我的.java文件:

import java.sql.DriverManager;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

public class Connect_db {
//  private static final String url = "jdbc:mysql://localhost:3306/sjsu";
//  private static final String user = "root";
//  private static final String password = ""; 
//
//  public static void main(String[] args) throws Exception {
//      java.sql.Connection con = null;
//      try {
//          Class.forName("com.mysql.jdbc.Driver");
//          con = DriverManager.getConnection(url, user, password);
//          // commented since doesn't exists in Java 6
//          // System.out.println(con.getSchema());
//          System.out.println(con.getCatalog());
//      } finally {
//          con.close();
//      }
//  }
    private static MysqlDataSource ds = null;

    public static MysqlDataSource getDataSource(String db_name) {
        if (ds == null) {
            // db variables set here
            getDataSource("jdbc:mysql://localhost:3306", "root", "", 3306);
        }
        ds.setDatabaseName(db_name);
        return ds;
    }

    private static void getDataSource(String db_url, String db_user, String db_password, int db_port) {
        try {
            ds = new MysqlDataSource();
            ds.setServerName(db_url);
            ds.setUser(db_user);
            ds.setPassword(db_password);
            ds.setPort(db_port);
        } catch (Exception e) {
            System.out.println("MysqlDataSource err: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
我的.jsp文件

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>atozknowledge.com demo Regjsp</title>
</head>
<body>
<%@ page import ="java.sql.*" %>
<%@ page import ="javax.sql.*" %>
<%
String user=request.getParameter("userid"); 
session.putValue("userid",user); 
String pwd=request.getParameter("pwd"); 
String fname=request.getParameter("fname"); 
String lname=request.getParameter("lname"); 
String email=request.getParameter("email"); 
Class.forName("com.mysql.jdbc.Driver"); 

java.sql.Connection con = Connect_db.getDataSource("sjsu").getConnection();

Statement st= con.createStatement(); 
ResultSet rs; 
int i=st.executeUpdate("insert into users values ('"+user+"','"+pwd+"','"+fname+"', '"+lname+"','"+email+"')"); 

out.println("Registered"); 


%>
<a href="index.html">Home</a>
</body>
</html>

atozknowledge.com演示Regjsp
我的html:

<!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=ISO-8859-1">
<title>atozknowledge.com demo Registration</title>
</head>
<body>
<form action="reg.jsp" method="post">

User name :<input type="text" name="userid" /><br/><br/>
password :<input type="password" name="pwd" /><br/><br/>
First name :<input type="text" name="fname" /><br/><br/>
Last name :<input type="text" name="lname" /><br/><br/>
Email :<input type="text" name="email" /><br/><br/>
<br/><br/>

<input type="submit" />

</form>
</body>
</html>

atozknowledge.com演示注册
用户名:

密码:

名字:

姓氏:

电子邮件:



错误

它过去可以把用户ID,pwd。。。在我的数据库中等,现在它不能。

由于错误状态,它找不到类
Connect\u db
。您需要将
Connect\u db
的显式导入添加到JSP,即添加:

<%@ page import ="package.of.Connect_db" %>

直接从JSP查询是一个糟糕的选择,您应该将获取数据与显示数据分开

Tomcat还提供对创建和注册数据源的支持,使用它而不是滚动自己的数据源。特别是,由于
MysqlDataSource
不提供连接池


最后,将值连接到查询字符串中是不安全的,尤其是对于用户提供的输入,因为这会让您面临SQL注入。相反,您应该使用带有参数的预处理语句。请看一下JDBC教程中的用法。

我建议您使用servlet,而不是使用my.jsp inn操作。也许它能解决你的问题。创建一个新的servlet,并在post方法中编写代码。

请将异常消息以文本形式发布,而不是以屏幕截图形式发布。我添加了页面导入,但仍然无效,结果相同。@a123
Connect\u db
是否在一个包中?如果没有,请将其移动到包中。并确保在导入时使用该软件包。如果这仍然不起作用,请更新你的问题,以显示你的项目布局。我把它放在一个包中,我使用了准备好的语句,它现在起作用了!谢谢这是一个评论。没有答案