2017-12-02 6 views
-1

데이터베이스에 연결하기 위해 Java 코드를 가져 오려고합니다. 나는 그것이 몇 시간 전에 연결되었다고 맹세한다. 그리고 갑자기 그것이 아니다. 다시 설치하고, xampp을 재시작하고, 내 랩톱을 초기화합니다. 나는 심지어 MySQL을 제거하고 다시 설치했다. Java가 데이터베이스에 연결되지 않음

여기 내 된 .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, ... 등을 넣을 수 있었지만 지금은 할 수 없습니다.

+0

스크린 샷이 아닌 텍스트로 예외 메시지를 게시하십시오. –

답변

1

오류 상태로 클래스 Connect_db을 찾을 수 없습니다. JSP에서 직접 쿼리

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

당신은 데이터를 표시에서 데이터를 가져 분리한다, 가난한 선택 : 당신은 당신의 JSP에 Connect_db에 대한 명시 적 가져 오기를 추가 할 필요가, 그 추가한다.

Tomcat은 데이터 소스를 만들고 등록하는 기능도 제공합니다.이 기능은 데이터 소스를 롤링하는 대신 사용할 수 있습니다. 특히 MysqlDataSource은 연결 풀링을 제공하지 않습니다.

마지막으로 쿼리 문자열에 값을 연결하면 안전하지 않음, 특히 사용자가 입력 한 내용으로 인해 SQL 삽입을 위해 열어 둡니다. 대신 매개 변수가있는 prepared statement를 사용해야합니다. JDBC 튜토리얼에서 Prepared Statements 사용하기를 살펴보십시오.

+0

페이지 가져 오기를 추가했는데 여전히 결과가 동일하지 않습니다. – a123

+0

@ a123'Connect_db'는 패키지에 있습니까? 그렇지 않은 경우 패키지로 이동하십시오. 가져 오기에서 해당 패키지를 사용해야합니다. 그래도 문제가 해결되지 않으면 질문을 업데이트하여 프로젝트의 레이아웃을 표시하십시오. –

+0

패키지에 넣고 준비된 문을 사용했습니다. 이제 작동합니다! 감사!! – a123

-1

my.jsp inn에서 from 액션을 제공하는 대신 서블릿을 사용하는 것이 더 좋습니다. 어쩌면 그것은 당신을 해결할 수 있습니다. 새 서블릿을 작성하고 post 메소드 내에 코드를 작성하십시오.

+0

이것은 의견입니다. 대답이 아닙니다. –