2017-12-02 8 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インジェクションを開いたままになります。代わりに、パラメータ付きの準備文を使用する必要があります。 JDBCチュートリアルでPrepared Statementsを使用するを見てください。

+0

私はページのインポートを追加しましたが、それはまだ同じ結果、仕事をしません。 – a123

+0

@ a123 'Connect_db'はパッケージに入っていますか?そうでない場合は、パッケージに移動します。インポートでそのパッケージを使用していることを確認してください。それでも問題が解決しない場合は、質問を更新してプロジェクトのレイアウトを表示してください。 –

+0

私はそれをパッケージに入れ、準備文を使用しました。ありがとう!! – a123

-1

my.jsp innにfromアクションを指定する代わりに、サーブレットを使用する方がよいと勧めます。たぶんそれはあなたを解決することができます。新しいサーブレットを作成し、postメソッド内にコードを記述します。

+0

これはコメントです。答えではない –

関連する問題