2017-08-04 7 views
-1

オンラインビデオストアをシミュレートするアプリケーションを作成しようとしています。私はWorkbenchでデータベースを作成しました。ユーザーの入力がデータベースの電子メールとパスワードのものと一致するかどうかを調べるif文を作成しようとしています。しかし、私は接続またはドライバについてのエラーを取得します。誰かが私を助けてくれることを願って、ありがとう!スレッドで 例外 "メイン" にjava.lang.ClassNotFoundException:com.mysqlJavaデータベースとSQLデータベース

はここにここに私のSQLスクリプトここ

create database users; 
use users; 
create Table Accounts(
UserEamil Char(20) NOT NULL , 
UserPassword Char(20) NOT NULL 
); 

私の誤差があるであるJavaコード

public static void main(String[] args) throws SQLException, ClassNotFoundException 
{  
      Class.forName("com.mysql.jdbc.Driver"); 
      Scanner input = new Scanner(System.in); 
      String answer = ""; 
      String sql = ""; 
      String email = ""; 
      String password = ""; 

      Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql?zeroDateTimeBehavior=convertToNull [root on Default schema]", "<username>", "<password>");       
      Statement myStmt = myConn.prepareStatement(sql); 
      ResultSet rs; 

      while(!answer.equals("n") || !answer.equals("y")) 
      { 
       System.out.print("Do you have an account? (Y/N) : "); 
       answer = input.nextLine(); 

       if(answer.toLowerCase().equals("n")) 
       { 
        System.out.println("Please enter the email and password for your new account."); 
        System.out.print("Email: "); 
        email = input.nextLine(); 
        System.out.print("Password: "); 
        password = input.nextLine(); 
        sql = "insert into accounts " 
     + " (UserEmail, UserPassword)" + " values (?, ?)"; 

        myStmt.executeUpdate(sql); 


       } 
       else if(answer.toLowerCase().equals("y")) 
       { 
        System.out.print("\nEmail: "); 
        email = input.nextLine(); 
        System.out.print("\nPassword:"); 
        password = input.nextLine(); 
        rs = myStmt.executeQuery(sql); 
        if(!rs.absolute(1)) 
        { 
         System.out.println("You do not have an account. Please create one."); 
         continue; 
        } 
       } 
       else{ 
        System.out.println("Invalid input. Please try again."); 
        continue; 
       } 
      } 

です。 jdbc.Driver

+1

も投稿してください。 –

+0

私はそれを追加しました。 スレッド "main"の例外java.sql.SQLException:jdbc:mysql:// localhost:3306/mysql?zeroDateTimeBehavior = convertToNullの適切なドライバが見つかりません[ root on default schema] – pca03

答えて

0

sql = "insert into accounts " 
    + " (UserEmail, UserPassword)" + " values (?, ?)"; 

myStmt.executeUpdate(sql); 

あなたがすべきことは、SQLを使用してPreparedStatementを作成し、次に各パラメータに対してsetStringを呼び出すことです。

sql = "insert into accounts " 
    + " (UserEmail, UserPassword)" + " values (?, ?)"; 
Statement myStmt = myConn.prepareStatement(sql); 
myStmt.setString (1, email); 
myStmt.setString (2, password); 

myStmt.executeUpdate(); 

ノート

は現在、あなたのコードの先頭にあなたは

 Connection myConn = DriverManager.getConnection("....");       
     Statement myStmt = myConn.prepareStatement(sql); 

を持っていますが、この時点でsqlの値が空の文字列である - それは

注2を動作しません。

このanswerと相談してくださいあなたの接続文字列を正しく設定するには、

+0

ありがとう、これははるかに理にかなっています。私のドライバーの問題に加えて、他に何か提案がありますか? – pca03

+0

yes、 'while(!answer.equals(" n ")||!answer.equals(" y "))'使用する必要があります '&&' ** not ** '||' –

+0

私のドライバは動作しましたが、今は私はこのエラーが表示されます:スレッド "メイン"の例外com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 'フィールドリスト'の 'UserEmail'列が不明です ご意見はありますか? – pca03

0

mysql jdbcドライバをダウンロードしましたか?あなたはクラスパスを追加することによって、それを修正することができるはず :

C:\test>java -cp c:\test\mysql-connector-java-5.1.8-bin.jar;c:\test JDBCExample 

から撮影:このコードは、値が設定されていないと仕事に行くのではありません https://www.mkyong.com/jdbc/how-to-connect-to-mysql-with-jdbc-driver-java/

+0

はい私はこれをしました – pca03

+0

ClassNotFoundExceptionは、一般的にJavaが指定されたクラスを見つけられなかったことを意味し、クラスパスにクラスまたはライブラリを提供する必要があります。私のアドバイスは、正しく参照しています。 –

+0

プロジェクトフォルダにmysql-connectorフォルダ全体がありますが、srcフォルダにはありません。私はそこに置くか、 "Class.forName(" com.mysql.jdbc.Driver ")"行を変更すべきですか? – pca03

関連する問題