estoy provando sobre el evento keyRealesed de una caja de texto esto
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection cn;
cn =
DriverManager.getConnection("jdbc:sqlserver://localhost:1036;databasename=nwind",
"sa", "");
PreparedStatement st = cn.prepareStatement("sps_productos '?'");
st.setString(1,txt.getText());
} catch (ClassNotFoundException f) {
JOptionPane.showMessageDialog(null,
"Clase no encontrada descripciom:\n" +
f.getMessage());
} catch (SQLException f) {
JOptionPane.showMessageDialog(null,
"error sql descipcion:\n" + f.getMessage());
System.out.print(f.getMessage());
}
y me sale este error
CitarEl índice 1 está fuera de intervalo
es una bd sqlserverexpress se conecta sin problemas uso java 6 en win xp
me parece que el problema que tienes es con la parametrización para la BD.
¿sps_productos es un String? si fuese asi. Por ej.:
String sps_productos = "select * from producto where cod_pro="
Tu parametrización quedaria de esta forma:
PreparedStatement st = cn.prepareStatement(sps_productos + "'?'");
Espero te sirva, en lo personal nunca lo he realizado pero he leido bastante de esto.
Saludos.
Cita de: cornell en 23 Febrero 2009, 18:45 PM
me parece que el problema que tienes es con la parametrización para la BD.
¿sps_productos es un String? si fuese así. Por ej.:
String sps_productos = "select * from producto where cod_pro="
Tu parametrización quedaria de esta forma:
PreparedStatement st = cn.prepareStatement(sps_productos + "'?'");
Espero te sirva, en lo personal nunca lo he realizado pero he leido bastante de esto.
Saludos.
sps_productos es un storeprocedure no es una cadena de texto que contenga una consulta select
Entonces, como estas trabajando con procedimiento almacenado debe ser de esta forma:
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection cn = null;
CallableStatement proc = null;
cn = DriverManager.getConnection("jdbc:sqlserver://localhost:1036;databasename=nwind","sa", "");
proc = cn.prepareCall("{ call sps_productos(?) }");
proc.setString(1,txt.getText());
proc.execute();
} finally {
try {
proc.close();
cn.close();
} catch (ClassNotFoundException f) {
JOptionPane.showMessageDialog(null, "Clase no encontrada descripciom:\n" + f.getMessage());
} catch (SQLException f) {
JOptionPane.showMessageDialog(null, "error sql descipcion:\n" + f.getMessage());
System.out.print(f.getMessage());
}
}