2014-04-29 8 views
1
try 
{ 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    con1=DriverManager.getConnection("jdbc:odbc:MyDatabase"); 
    st1=con1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 
    System.out.println("Connect database in BallMoves1.java ......."); 
    /*the below line giving error*/ 
    rs1 = st1.executeQuery("insert into highscore" + " (score) " + "values('"+score+"')"); 
    System.out.println("Score is inserted.."); 
    System.out.println("Score......."+score); 
}catch(Exception e){ e.printStackTrace();} 

/*highscore is table and attributes of table are (sid,score). 

l'erreur résultant est:comment insérer la valeur dans l'accès ms en utilisant java

Connect database in BallMoves1.java ....... 
java.sql.SQLException: No ResultSet was produced 
    at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:258) 
    at BallMoves1.move(BallMoves1.java:378) 
    at BallMoves1.run(BallMoves1.java:223) 
    at java.lang.Thread.run(Thread.java:744)*/ 
+0

Et l'erreur est ...? (Vous devriez toujours * inclure * les détails du message d'erreur.) Utilisez également SQL paramétré au lieu de mettre la valeur directement dans votre SQL ... et formatez vos messages plus soigneusement à l'avenir, en utilisant des espaces au lieu des onglets. –

Répondre

2

Vous appelez executeQuery sur quelque chose qui n'est pas une requête. Mais au lieu d'appeler execute avec le même SQL, vous devez utiliser un PreparedStatement:

String sql = "insert into highscore (score) values (?)"; 
try (Connection conn = DriverManager.getConnection("jdbc:odbc:MyDatabase"); 
    PreparedStatement statement = conn.prepareStatement(sql)) { 
    statement.setInt(1, score); 
    statement.executeUpdate(); 
    conn.commit(); 
} 

toujours utiliser SQL paramétrées, au lieu de brancher directement les valeurs dans le SQL - qui vous protège des attaques par injection SQL, les erreurs de conversion , et difficile à lire le code.

Utilisez une instruction try-with-resources (comme je l'ai fait) pour fermer automatiquement l'instruction et la connexion à la fin du bloc.

Questions connexes