2017-04-05 1 views
1

J'essaie de faire de la pratique Ucanaccess pour gérer certaines bases de données avec Java. Et je reçois une erreur que je ne sais pas comment résoudre.UCanAccess: l'utilisateur manque de privilège ou d'objet non trouvé

Je possède ce tableau intitulé LES UTILISATEURS accès:

enter image description here

Autonumber, texte court, texte court, Nombre.

Donc ce que j'essaie de faire est de vérifier si un Utilisateur et un Mot de passe donné sont corrects, et s'ils le sont, alors changez "CONNEXIONS". Mais je reçois cette erreur:

Exception in thread "main" net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.1 usuario no tiene privilegios suficientes o objeto no encontrado: Z_19MIKE95

at net.ucanaccess.jdbc.UcanaccessStatement.executeUpdate(UcanaccessStatement.java:221)
at Ej4.Ej4.main(Ej4.java:32)

Cela signifie en anglais:

UCAExc:::4.0.1 user lacks of privileges or object not found Z_19MIKE95

donc mon code est la suivante:

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 
    String url="jdbc:ucanaccess://C:/Users/PC-Mikel/Desktop/Uni/Distribuidos/P4Ejer4.accdb"; 
    Connection connection = DriverManager.getConnection(url); 
    Statement statement = connection.createStatement(); 
    String sql,user,pass; 
    System.out.println("Introduzca Usuario"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    user = br.readLine(); 
    System.out.println("Introduzca Contraseña"); 
    BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in)); 
    pass = br2.readLine(); 
    sql= "UPDATE USERS SET CONEXIONES = 1 WHERE USUARIO = "+user+" AND CONTRASENA = " +pass; 
    System.out.println(sql); 
    int nrows = statement.executeUpdate(sql); 

Le code se poursuit, mais il y a juste quelques conditions et requêtes .

Répondre

1

Votre SQL dynamique crée une requête qui confond les valeurs de données avec les noms de colonne. Vous devez utiliser un PreparedStatement et une requête paramétrées , par exemple,

sql= "UPDATE USERS SET CONEXIONES = 1 WHERE USUARIO = ? AND CONTRASENA = ?"; 
PreparedStatement pstmt = connection.prepareStatement(sql); 
pstmt.setString(1) = user; 
pstmt.setString(2) = pass; 
int nrows = pstmt.executeUpdate();