1

我对 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();

有时此代码可以完美运行,但一段时间后,此代码停止工作,并提供如下错误:

INFO: SQLException:[Microsoft][ODBC Driver Manager] 无效的字符串或缓冲区长度

但是如果我将上面的代码修改如下:

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 页面、Servlet 或我使用的 Bean 类中。如果有人能建议我可能做错了什么以及如何避免这个问题,我将不胜感激?

4

2 回答 2

1

首先,java odbc驱动对于webservers和多线程环境不是很好。我真的认为这与你的错误有关。

它丢失了数据库连接引用。你无能为力。唯一的方法是使用适用于 MS SQL 的 JDBC 驱动程序,这是一个更好的 Web 环境驱动程序。

INFO: SQLException:[Microsoft][ODBC Driver Manager] 无效的字符串或缓冲区长度

它有时也与数据库服务器的升级有关。
因为java odbc驱动的版本必须和db server版本匹配...

于 2012-08-23T10:17:55.767 回答
0

我在使用外部连接器连接到 oracle 数据库时遇到了这个问题。这里的问题是 ODBC 驱动程序。我使用的是 Oracle 11G 并在源代码中创建了一个 DSN。Oracle 11G 所需的 JDBC-ODBC 驱动程序是 ojdbc5.jar。我更改了驱动程序,错误消失了。此错误主要与 64 位进程有关。

于 2013-08-09T03:55:59.653 回答