下面的这个方法放在一个类中可以正常工作,但是当粘贴到 servlet 代码中并被调用时,根本不起作用。生成的错误消息是:[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
如何修复上述错误消息?数据库已在系统中正确注册,并且如果此代码在常规类中,则该数据库正在工作。我在这里做错了什么?
public static int sendMyQUERY(String q) {
int i = 0;
Connection conn = null;
Statement s = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String database = "jdbc:odbc:SS";
conn = DriverManager.getConnection(database, "", "");
s = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
i = s.executeUpdate(q);
s.close();
conn.close();
return i;
} catch (Exception ee) {
ee.printStackTrace();
} finally {
return i;
}
}// endMethod
这是 servlet 代码。通过不工作,我的意思是查询不会被执行,因为我看不到 printStackTrace(),我也不知道原因。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class SS extends HttpServlet {
public static int sendMyQuery( String q ){
int i=0;
Connection conn=null;
Statement s=null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String database= "jdbc:odbc:SS";
conn= DriverManager.getConnection( database,"","" );
s = conn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
i=s.executeUpdate(q);
s.close(); conn.close();
return i;
} catch (Exception ee) {
ee.printStackTrace();
} finally {
return i;
}
}//End
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws IOException{
PrintWriter pw= response.getWriter();
response.setContentType("text/html");
int j = sendMyQuery("CREATE TABLE "+users+" ( id AUTOINCREMENT, username varchar(255) , pass varchar(255), PRIMARY KEY(id) ) ");
pw.println(" <h1> "+ Integer.toString(j) + " query response ");
}//doGet
}//class
在上面的代码中,表根本不会被创建。就像从未发送过查询一样。