Applet からデータベースへのアクセス
Java Applet からデータベースにアクセスさせようとしています。
サーバサイドのプログラムは介さずに Applet のみでデータベースへアクセスするプログラムを作ろうとしています。
システムポリシーファイルに
C:\Program Files\Java\jre1.5.0_10\lib\security\java.policy
grant codeBase "file:///C:/Progra~1/myApplication/ewTester/*" {
permission java.security.AllPermission;
};
このような権限を設定しました。
Applet は、
ブラウザでアドレスに
file:///C:\Program Files\myApplication\ewTester\index.html
このように起動します。
実行すると
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPackageAccess(Unknown Source)
at sun.applet.AppletSecurity.checkPackageAccess(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at ResultRegister.RegisterResult(ResultRegister.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.invoke.JSInvoke.invoke(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
at sun.plugin.com.MethodDispatcher.invoke(Unknown Source)
at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.com.DispatchImpl.invoke(Unknown Source)
このようなランタイムエラーになります。
ソースは、
import javax.swing.JApplet;
import java.sql.*;
public class ResultRegister extends JApplet {
/**
*
*/
private static final long serialVersionUID = 1L;
public void RegisterResult(String strQNumber, int intChoice, int intResult){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection objConnection = DriverManager.getConnection("jdbc:odbc:Dsn_Result");
Statement objStatemant = objConnection.createStatement();
String strSql =
"SELECT MAX(it_Result) AS ResultMax FROM tbl_Result;";
ResultSet objRst = objStatemant.executeQuery(strSql);
int intMaxIndex = 0;
while(objRst.next()){
intMaxIndex = objRst.getInt("ResultMax");
}
strSql =
"INSERT INTO tbl_Result ( it_Result, "+
" vc_QNumber, " +
" ti_Choice, " +
"bt_Result, " +
"dt_AnswerDateTime ) " +
"VALUES ( " + Integer.toString(intMaxIndex+1) + ", "+
"'" +strQNumber+ "', "+
Integer.toString(intChoice) +", "+
Integer.toString(intResult)+"," +
" GETDATE() );";
objStatemant.execute(strSql);
objStatemant.close();
objConnection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
これだけです。
どなたか設定方法の分かるかたおりますでしょうか?
お礼
とても参考になりました。回答どうもありがとうございます。