以下のこのメソッドは、クラスに配置された場合は正常に機能しますが、サーブレットコードに貼り付けられて呼び出された場合は、まったく機能しません。生成されるエラーメッセージは次のとおりです。[Microsoft][ODBCDriver Manager]データソース名が見つからず、デフォルトのドライバーが指定されていません
上記のエラーメッセージを修正するにはどうすればよいですか?データベースはシステムに正しく登録されており、このコードが通常のクラスにある場合は機能しています。私はここで何が間違っているのですか?
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
これはサーブレットコードです。動作しないということは、クエリが実行されないことを意味し、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
上記のコードでは、テーブルはまったく作成されません。クエリが送信されなかったように。