Java没有连接到数据库

时间:2017-12-02 08:31:09

标签: 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_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>

我的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>

错误

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

它曾经能够将userid,pwd,...等放在我的数据库中,现在它不能。

2 个答案:

答案 0 :(得分:1)

如错误所述,它找不到类Connect_db。您需要向JSP添加Connect_db的显式导入,即添加:

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

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

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

最后,将值连接到查询字符串中不安全,尤其是使用用户提供的输入时,因为它会让您对SQL注入开放。相反,您应该使用带参数的预准备语句。请参阅JDBC教程中的使用Prepared Statements

答案 1 :(得分:-1)

我建议你不要给my.jsp inn赋予动作,最好使用servlet。也许它可以解决你的问题。创建一个新的servlet并在post方法中编写代码。