我试图运行我在互联网上找到的这个项目,但我在netbeans中遇到这些错误“com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:PROCEDURE contactos.sp_guardar不存在”,这些错误来自这两个查询:
更新数据库
String sql =“call sp_guardar(?,?,?,?,?)”;
搜索db
String sql =“call buscar(?)”;
很想得到这方面的帮助。使用通过xammp连接的mysql数据库
项目代码。
package contactosfx;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
public class AmigoDao implements AmigoInterface {
public AmigoDao(){
}
@Override
//UPDATE DB
public void guardar(Amigo amigo) {
Connection con = Conexion.conectar();
CallableStatement cs = null;
String sql = "call sp_guardar(?,?,?,?,?)";
try {
cs = con.prepareCall(sql);
cs.setString(1, amigo.getFoto());
cs.setString(2, amigo.getNombre());
cs.setString(3, amigo.getCorreo());
cs.setString(4, amigo.getTelf());
cs.setInt(5, amigo.getEstado());
cs.executeUpdate();
cs.close();
con.close();
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
if (con != null) {
cs.close();
con.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
@Override
public void actualizar(Amigo amigo, int id) {
Connection con = Conexion.conectar();
CallableStatement cs = null;
//String sql = "call sp_actualizar(?,?,?,?,?,?)";
try {
cs = con.prepareCall(sql);
cs.setString(1, amigo.getFoto());
cs.setString(2, amigo.getNombre());
cs.setString(3, amigo.getCorreo());
cs.setString(4, amigo.getTelf());
cs.setInt(5, amigo.getEstado());
cs.setInt(6, id);
cs.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
if (!con.isClosed()) {
cs.close();
con.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
@Override
public ObservableList<Amigo> buscar(String nombres) {
Connection con = Conexion.conectar();
CallableStatement cs = null;
ResultSet rs = null;
ObservableList<Amigo> lista = FXCollections.observableArrayList();
String sql = "call buscar(?)";
//String sql = "call search(?)";
try {
cs = con.prepareCall(sql);
cs.setString(1, nombres);
rs = cs.executeQuery();
while(rs.next()){
lista.add(new Amigo(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5),rs.getInt(6)));
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return lista;
}
@Override
public ObservableList<Amigo> buscarHabilitados() {
Connection con = Conexion.conectar();
Statement st = null;
ResultSet rs = null;
String sql = "select*from habilitados";
ObservableList<Amigo> lista = FXCollections.observableArrayList();
try {
st = con.createStatement();
rs = st.executeQuery(sql);
while (rs.next()) {
lista.add(new Amigo(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getInt(6)));
}
} catch (SQLException e) {
e.printStackTrace();
}
return lista;
}
@Override
public ObservableList<Amigo> buscarDeshabilitados() {
Connection con = Conexion.conectar();
Statement st = null;
ResultSet rs = null;
String sql = "select*from deshabilitados";
ObservableList<Amigo> lista = FXCollections.observableArrayList();
try {
st = con.createStatement();
rs = st.executeQuery(sql);
while (rs.next()) {
lista.add(new Amigo(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getInt(6)));
}
} catch (SQLException e) {
e.printStackTrace();
}
return lista;
}
}
答案 0 :(得分:1)
这些是代码编写者认为将在数据库中的存储过程。显然,他们不是。要使其正常工作,您需要实现sp_guardar
以及可能buscar
存储过程,或者从代码中删除它们。