2016-11-07 2 views
0

Ich versuche, Daten in verschlüsselter Form in MySQL mit vorbereiteten Anweisung einfügen. Aber ich bekomme diesen Fehler. Ich denke meine Anfrage ist korrekt.AES_ENCRYPT mit MySQL-Server 5.5

Connection con=null; 
    PreparedStatement psmt1=null; 

    String tit=request.getParameter("tit"); 
    String min=request.getParameter("minvalue"); 
    String max=request.getParameter("maxvalue"); 
    String disc=request.getParameter("disc"); 
    System.out.println(tit); 
    String [] title=tit.split(":"); 

    try{ 
    con=databasecon.getconnection(); 
    psmt1=con.prepareStatement("insert into medication(tid,titname,minvalue,maxvalue,disc) values(AES_ENCRYPT(?, 'key'),AES_ENCRYPT(?, 'key'),AES_ENCRYPT(?, 'key'),AES_ENCRYPT(?, 'key'),AES_ENCRYPT(?, 'key'))"); 

psmt1.setString(1,title[0]); 
psmt1.setString(2,title[1]); 
psmt1.setString(3,min); 
psmt1.setString(4,max); 
psmt1.setString(5,disc); 
psmt1.executeUpdate(); 
} 
catch(Exception ex) 
{ 
out.println("Error in connection : "+ex); 
} 

Unten ist meine Verbindungsklasse

package databaseconnection; 
import java.sql.*; 

public class databasecon 
{ 
    static Connection con; 
    public static Connection getconnection() 
    { 


     try 
     { 
      Class.forName("com.mysql.jdbc.Driver"); 
      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/cam","root","root"); 
     } 
     catch(Exception e) 
     { 
      System.out.println("class error"); 
     } 
     return con; 
    } 

} 

Und schließlich Fehler sind

Error in connection : java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'maxvalue,disc) values(AES_ENCRYPT('6', 'key'),AES_ENCRYPT('systolic bp', 'key'),' at line 1 

Wie meine Kolleginnen und Entwickler angefordert ich bin mein Tisch sturuture Below is my table def:

+1

Mögliche Duplikate von [AES \ _ENCRYPT und AES \ _DECRYPT mit Java] (http://StackOverflow.com/Questions/27938636/aes-Encrypt-and-aes-DEcrypt-using-Java) – rkosegi

Antwort

0

I don Entsendung Ich weiß nicht, warum das der Fall ist, aber du musst bestehen in einem Byte-Array als zweiten Parameter zu MySQL AES_ENCRYPT:

psmt1 = con.prepareStatement("insert into medication(tid,titname,minvalue,maxvalue,disc) values(AES_ENCRYPT(?, 'key'),AES_ENCRYPT(?, 'key'),AES_ENCRYPT(?, 'key'),AES_ENCRYPT(?, 'key'),AES_ENCRYPT(?, 'key'))"); 

byte[] keyBytes = "key".getBytes(); 
psmt1.setString(1, title[0]); 
psmt1.setBytes(2, keyBytes); 
psmt1.setString(3, title[1]); 
psmt1.setBytes(4, keyBytes); 
psmt1.setString(5, min); 
psmt1.setBytes(6, keyBytes); 
psmt1.setString(7, max); 
psmt1.setBytes(8, keyBytes); 
psmt1.setString(9, disc); 
psmt1.setBytes(10, keyBytes); 
psmt1.executeUpdate(); 

ich sagen, dass ich die MySQL documentation impliziert keine Erklärung haben, weil, dass beide Parameter AES_ENCRYPT Strings sind. Ich hätte diesen Fehler selbst gemacht.

+0

Nein, das nicht löste mein Problem Ich erhalte folgenden Fehler – Kishan

+0

Auch ich habe versucht, mit ohne Verschlüsselung auch einfügen, aber ich habe psmt1 = con.prepareStatement ("Einfügen in Medikation (Tid, Titname, Minvalue, Maxvalue, Disc) Werte (?,?,?,? ,?)) "); – Kishan

+0

Veröffentlichen Sie Ihre Tabellendefinition. –