java - 未知的 sql 查询

标签 java mysql

我试图运行我在互联网上找到的这个项目,但我在 netbeans 中收到这些错误“com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:PROCEDURE contactos.sp_guardar 不存在”,它们是由这两个查询引起的:

更新数据库

String sql = "call sp_guardar(?,?,?,?,?)";

搜索数据库

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;

}

the database table screenshot

最佳答案

这些是代码编写者认为会在数据库中的存储过程。显然,他们不是。要使其正常工作,您需要实现 sp_guardar 和可能的 buscar 存储过程,或者将它们从代码中删除。

关于java - 未知的 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38755850/

相关文章:

Java/Selenium WebDriver : Focus Don't skip to Else If block when the warning message matches on webpage

Java:简单数组

java - 如何使用Java在Mongodb中插入不重复的数据?

php - SQL-如何将B表的多个id存储到A表中?

mysql - 删除此 JOIN 是否可以提高性能?

PHP MySQL表,可重用

java - 使用 Apache HttpClient 如何在请求和响应中设置 TIMEOUT

java - 在 H2 数据库中插入时间 - 未找到函数 "PARSEDATETIME"

java - ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

java - 用于将德国地址拆分为多个部分的正则表达式