【发布时间】:2021-11-28 14:27:50
【问题描述】:
我正在编写一个必须与 MySQL 数据库交互的 Java 程序,并且我正在尝试从 Java 查询中删除表中的一行。
问题是,当我尝试将 Java 中的字符串“2021/2022”转换为 char(9) 时,我收到一条错误消息,指出数据对于列而言太长。有人可以帮忙吗?
这是应该删除行的方法:
public boolean borrarMatricula(Connection conn, int alumno, int profesor, int asignatura,
String c){
boolean borrado = false;
String drop = "DROP PROCEDURE IF EXISTS DELETE_ENROLLMENT";
String rutina = "CREATE PROCEDURE DELETE_ENROLLMENT(IN alumno double(4,0), "
+ "IN profesor double(2,0), IN asignatura double(3,0), IN c char(9))"
+ "BEGIN "
+ "DELETE FROM MATRICULAS WHERE codigoAlumno=alumno and "
+ "codigoProfesor=profesor and codigoAsignatura=asignatura and curso=c;"
+ "END";
try{
Statement s = conn.createStatement();
s.execute(drop);
s.execute(rutina);
CallableStatement cs=conn.prepareCall("{call DELETE_ENROLLMENT(" +
alumno + "," + profesor + "," + asignatura + "," + c + ")}");
cs.execute();
borrado = true;
}
catch(SQLException e){
Vista.muestraErrorSQL(e);
}
catch(Exception e){
e.printStackTrace(System.err);
}
return(borrado);
}
“Curso”定义为char(9),我使用的String是2021/2022
【问题讨论】:
-
你能分享一个你使用的代码以及你用来创建表的sql吗?
-
建议在问题中也包含相关代码,或者最好包含minimal and reproducible example
-
@MirekPluta 抱歉,第一次发帖。我已经编辑过了
-
@esQmo_ 抱歉,第一次发帖。我已经编辑过了