私は Java プログラミングの初心者で、現在 MVC アーキテクチャを使用して最初の Web アプリケーションを開発しています。しかし、アプリケーションで非常に多くの問題が発生しており、その理由がわかりません。たとえば、JSP ページに次のコードがあります。
Connection connection = null;
PreparedStatement statement = null;
ResultSet rs = null;
String QueryString="";
String stuid="";
try {
QueryString = "SELECT Student_ID, Student_F_Name, Student_L_Name, Student_NIC, Student_Address, Student_DOB, Student_Email, Student_Gender, Course_Name, Batch_Name, Student_username, Student_password FROM Student WHERE Student_ID = ?";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
connection = DriverManager.getConnection("Jdbc:Odbc:UniversityDSN");
statement=connection.prepareStatement(QueryString);
stuid = session.getAttribute("studentid").toString();
statement.setString(1, stuid);
rs = statement.executeQuery();
時々、このコードは完全に機能しますが、しばらくすると、このコードは機能しなくなり、次のようなエラーが表示されます。
情報: SQLException: [Microsoft] [ODBC ドライバー マネージャー] 無効な文字列またはバッファーの長さ
しかし、上記のコードを次のように修正すると:
String QueryString = "SELECT Student_ID, Student_F_Name, Student_L_Name, Student_NIC, Student_Address, Student_DOB, Student_Email, Student_Gender, Course_Name, Batch_Name, Student_username, Student_password FROM Student WHERE Student_ID = ?";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection connection = DriverManager.getConnection("Jdbc:Odbc:UniversityDSN");
PreparedStatement statement=connection.prepareStatement(QueryString);
String stuid = session.getAttribute("studentid").toString();
statement.setString(1, stuid);
ResultSet rs = statement.executeQuery();
それは再び働き始めます。しかし、しばらくすると、このコードは再び動作を停止し、同じ例外が発生するため、以前のように修正する必要があります。しかし、どちらの場合も、デバッグするとコードは完全に機能します。コードを修正するために多くの時間を無駄にしなければならず、JSP ページ、サーブレット、または使用する Bean クラスで発生するため、これは非常に面倒です。誰かが私が間違っている可能性があることを教えてくれたら、本当に感謝しています。どうすればこの問題を回避できますか?