目前,我在尝试将数据插入数据库时,正在使用JSP。我使用Java类来做到这一点,不惜一切代价避免乱写。事实是,当我想将数据插入3个不同的表时,只有第一个表在JSP中执行此操作时才会填充。您知道填写表单,将数据发送到类,然后数据库就会填满。如果我单独使用Java App,所有表只能填充一个函数。 JSP不起作用,Java应用程序呢?什么?
这是java类:
public void fileDataToDB(String file1, String file2, String file3, String aPath, String operationUsed) {
try {
Class.forName("com.mysql.jdbc.Driver");
connectMe = DriverManager.getConnection(url+dbName, userNameDB, passwordDB);
String query = "INSERT INTO MatrixUsers.FilePath (idFilePath, LocationFiles) VALUES (?, ?)";
String query2 = "INSERT INTO MatrixUsers.Sessions (idSessions, Matrix1, Matrix2, Result) VALUES (?, ?, ?, ?)";
String query3 = "INSERT INTO MatrixUsers.Operations (idOperations, Operation) VALUES (?,?)";
selectUsers = connectMe.prepareStatement(query2);
selectUsers.setInt(1, id);
selectUsers.setString(2, file1);
selectUsers.setString(3, file2);
selectUsers.setString(4, file3);
selectUsers.executeUpdate();
tip1 = "First table done!";
if(aPath != null)
contains = "Path is filled!";
selectUsers.close();
selectUsers = connectMe.prepareStatement(query);
selectUsers.setInt(1, id);
selectUsers.setString(2, aPath);
selectUsers.executeUpdate();
tip2 = "Second table done!";
selectUsers.close();
selectUsers = connectMe.prepareStatement(query3);
selectUsers.setInt(1, id);
selectUsers.setString(2, operationUsed);
selectUsers.executeUpdate();
tip3 = "Third table done!";
selectUsers.close();
connectMe.close();
} catch (Exception e) {
e.printStackTrace();
}
}
注意:我在JSP和Java应用程序中使用它并且是相同的。 TIPS变量仅用于知道代码切割的位置。在JSP中,它在第一个表中切换,其他返回null意味着其他查询永远不会被执行。容器变量也是要知道aPath变量是否填充并返回包含某些内容的变量。所以我认为那些怀疑是不可能的。它为什么这样切?当这在Java应用程序中显得相同时。
答案 0 :(得分:1)
解决方案:Row小于String aPath,将行大小从varchar(45)更改为varchar(255)并解决了问题!
感谢 dave823和cigno5.5 获取日志文件中的信息。