java.sql.SQLException: Paramètre index out of range (2 > nombre de paramètres, qui est 0)
public class Brothers extends javax.swing.JFrame {
/**
* declaring connection and SQL statement
*/
Connection cn;
Statement st;
PreparedStatement pstmt=null;
PreparedStatement pst;
ResultSet rs;
Object fname, mname, lname, bdate, nation, statusq,InstNo, photo, combo, place, mimi;
int status;
public Brothers() {
dbconnect _db = new dbconnect();
/*//////////////the above is just to show that I have two prepared statement each for each sql statement that i have //////////*/
try {
Class.forName("com.mysql.jdbc.Driver");
//String unicode= "?useUnicode=yes&characterEncoding=UTF-8";
cn = DriverManager.getConnection(_db.getHost(), _db.getUsername(), _db.getPassword());
st=cn.createStatement();
try{
String Sql="INSERT INTO brothers(FirstName, MiddleName, LastName, BirthDate, BirthPlace, Nationality, InstituteNumber, Status, Picture) VALUES(?,?,?,?,?,?,?,?,?)";
pstmt=cn.prepareStatement(Sql);
//pstmt.setString(1,txtTrial.getText());('?','?','?','?','?','?','?','?','?')
pstmt.setString(2,txtFirtsName.getText());
pstmt.setString(3,txtMiddleName.getText());
pstmt.setString(4,txtLastName.getText());
pstmt.setString(5,((JTextField)chooserBirthDate.getDateEditor().getUiComponent()).getText());
pstmt.setString(6,txtPlacBirth.getText());
String nations=combonation.getSelectedItem().toString();
pstmt.setString(7,nations);
pstmt.setString(8,txtInstituteNo.getText());
pstmt.setObject(9,combostatus.getSelectedItem());
pstmt.setBytes(10, person_image);
pstmt.executeUpdate(Sql);
JOptionPane.showMessageDialog(null, "Saving Successfull");
}
catch(Exception e){
//JOptionPane.showMessageDialog(null, e);
e.printStackTrace();
}
Lorsque j'essaie de l'encart de données à l'aide du code ci-dessus, il déclenche une exception:
java.sql.SQLException: Parameter index out of range (10 > number of parameters, which is 9).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3813)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3795)
J'ai essayé de regarder sur elle, mais je ne peux pas trouver le problème s'il vous plaît aider!!
quand je l'utilise au lieu de cela, je suis en mesure d'insérer les données, sauf pour la photo: try{ String addrecords="insert into frères(Prénom, MiddleName, Nom, date de Naissance, lieu de Naissance, Nationalité, InstituteNumber, Statut, Photo) values('"+ fname +"', '" + mname +"', '" + lname +"', '" + dave +"','" ++"', '" + isa +"', '" + InstNo +"', '" + statusq +"', '" + photo +"')"; //wrapField(); st.executeUpdate(addrecords); }
Vous devriez changer le titre de la question afin de correspondre à la le message de l'exception que vous mettez dans le corps de la question !
Vous devriez changer le titre de la question afin de correspondre à la le message de l'exception que vous mettez dans le corps de la question !
OriginalL'auteur Isaiah | 2013-04-24
Vous devez vous connecter pour publier un commentaire.
Vous êtes le démarrage de l'insérer à la position 2 au lieu de 1
Changer de
Faire de même pour les autres, où le dernier sera
Veuillez lire l'exception encore une fois, il est "(10 > nombre de paramètres, qui est de 9)", ce qui signifie qu'il est en train d'essayer d'insérer un paramètre dans la position de 10, mais il ne l'appui 9 paramètres. Aussi je n'ai pas dit qu'il a besoin pour définir les paramètres dans l'ordre.
Ma table a dix colonnes: BrothersID,Prénom, MiddleName, Nom, date de Naissance, lieu de Naissance, Nationalité, InstituteNumber, un Statut, une Image. BrothersID est un auto incrément sens je n'ai pas à entrer quoi que ce soit sur elle!!! Mais j'ai même essayé en trichant par la création d'un texte déposé que je n'utilise pas ...voir l' //pstmt.setString(1,txtTrial.getText()); mais encore, cela n'a pas fonctionné
Bien sûr, désolé, je n'ai pas de lire correctement l'exception dans le corps de thequestion, et de regarder le titre de la question !
Les gars quand je le fais, comme vous l'avez suggéré la variation de l'erreur: com.mysql.jdbc.des exceptions.jdbc4.MySQLSyntaxErrorException: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de '?,?,?,?,?,?,?,?,?)' à la ligne 1 au coucher du soleil.de réfléchir.NativeConstructorAccessorImpl.newInstance0(Native method)
OriginalL'auteur fmodos
Vous avez seulement 9 paramètres dans votre instruction SQL.
Lorsque vous commenté la première
setString
appel de méthode, vous devriez avoir renuméroté le paramètre indices pour les appels suivants. Ils doivent être numérotés de 1 à 9, pas 2 - 10.Ma table a dix colonnes: BrothersID,Prénom, MiddleName, Nom, date de Naissance, lieu de Naissance, Nationalité, InstituteNumber, un Statut, une Image. BrothersID est un auto incrément sens je n'ai pas à entrer quoi que ce soit sur elle!!! Mais j'ai même essayé en trichant par la création d'un texte déposé que je n'utilise pas ...voir l' //pstmt.setString(1,txtTrial.getText()); mais encore, cela n'a pas fonctionné
OriginalL'auteur Bill the Lizard
Le nombre de points d'interrogation
?
doit être égal à la valeur du paramètre.Si vous avez 7 paramètre, puis il devrait y avoir 7 points d'interrogation dans votre déclaration que j'ai.e
insert into table name values(?,?,?,?,?,?,?)
OriginalL'auteur user3235752
L'index du premier paramètre doit être 1 pas 2, l'indice du dernier paramètre doit être de 9 et non 10. Lors de l'attribution des N paramètres, l'indice va de 1 à N.
OriginalL'auteur Toni Toni Chopper
utilisation
psmt.executeUpdate();
au lieu de
pstmt.executeUpdate(Sql);
OriginalL'auteur rao arsalan