在Applet中访问数据库,通过JDBC啊,在客户端安装数据库的客户端。
这是我觉得在Applet实现队数据的访问好像没什么意义, Applet是需要下载到浏览器端的,然后再浏览器端运行,则会必然要求浏览器端好么安装你的数据库的客户端(比如OrACLE的客户端,SQLServer的客户端),另外还要建立数据的连接,基于浏览器的目的就是为了实现瘦客户,希望在客户端只需要一个浏览器,不需要在安装其他东西,什么数据库客户端啦,统统都不要装,这样就没哟任何意义了。
如果你在Applet中直接实现对数据库的访问,那必然需要在浏览器侧的机器必须安装数据库的客户端,如果你的程序时基于Intrarnet的,只是在企业网内部运行,虽然一个个机器去安装客户端,有些麻烦,到还是可以的。假如你是基于Internet,那就不可能了,你不可能要求每个来浏览网页的客户都安装数据库客户端,另外还需要配置数据库的连接吧。显然是不可能的。
我觉得可行的方法是WEB服务器和数据可服务器进行交互,WEB服务器取得数据后,然后将数据送到浏览器端。比较典型的方式一个是通过CGI编程,WEB服务器上的CGI进程从数据库取数据,然后HTML的方式发到浏览器端;另一种方式现在也用得很多,那就是使用ASP了。
我个人觉得在Applet访问数据美什么意义,不过还是附上JDBC的实现,下面是一个例子,这里提供的是一个通过JDBC以TCP/IP方式访问ORACLE数据库的例子,包括直接执行SQL语句和调用存储过程两种方式:import java.sql.*;
import java.lang.*;
import java.io.*;public class JDBC_EXAMPLE {
public static void main(String args[]){
Connection connection=null;
Statement dispSTMT=null; //用于装载执行静态的SQL语句
CallableStatement callableSTMT=null;
//可以调用数据库存储过程
ResultSet result; String sQueryStr="";
String sVolLevel=""; //建立数据库连接
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection (
"jdbc:oracle:thin:@10.136.140.156:1521:mis",
"UserName","Password"); //数据库的用户名和口令
//getConnection(String url,String UserName,String UserPassword)
dispSTMT=connection.createStatement();
}catch(Exception e){}
//执行SQL语句并去取得数据集
try {
sQueryStr="select TO_CHAR(SYSDATE) as SD form DUAL";
result=dispSTMT.executeQuery(sQueryStr);
if (result.next())
sVolLevel=result.getString("SD").trim();
}catch(Exception e){}
//执行存储过程并取得数据
try{
callableSTMT=(CallableStatement)con.prepareCall("{call SP_GETDYHGL(?,?,?,?,?,?,?,?)}"); callableSTMT.clearParameters();
String sInParm1,sInParm2,sInParm3,sInParm4;
String sOutParm1,sOutParm2;
float fOutParm3,fOutParm4;
sInParm1 ="Input Parm1";
sInParm2 ="Input Parm2";
sInParm3 ="Input Parm3";
sInParm4 ="Input Parm4"; //输入参数
callableSTMT.setString(1,sInParm1);
callableSTMT.setString(2,sInParm2);
callableSTMT.setString(3,sInParm3);
callableSTMT.setString(4,sInParm4); //注册输出参数
callableSTMT.registerOutParameter(5,Types.VARCHAR);
callableSTMT.registerOutParameter(6,Types.VARCHAR);
callableSTMT.registerOutParameter(7,Types.FLOAT);
callableSTMT.registerOutParameter(8,Types.FLOAT); //执行存储过程
callableSTMT.execute(); //取得输出数据
sOutParm1 =callableSTMT.getString(5);
sOutParm2 =callableSTMT.getString(6);
fOutParm3 =callableSTMT.getFloat(7);
fOutParm4 =callableSTMT.getFloat(8);
}catch(Exception e){}
}
}
这是我觉得在Applet实现队数据的访问好像没什么意义, Applet是需要下载到浏览器端的,然后再浏览器端运行,则会必然要求浏览器端好么安装你的数据库的客户端(比如OrACLE的客户端,SQLServer的客户端),另外还要建立数据的连接,基于浏览器的目的就是为了实现瘦客户,希望在客户端只需要一个浏览器,不需要在安装其他东西,什么数据库客户端啦,统统都不要装,这样就没哟任何意义了。
如果你在Applet中直接实现对数据库的访问,那必然需要在浏览器侧的机器必须安装数据库的客户端,如果你的程序时基于Intrarnet的,只是在企业网内部运行,虽然一个个机器去安装客户端,有些麻烦,到还是可以的。假如你是基于Internet,那就不可能了,你不可能要求每个来浏览网页的客户都安装数据库客户端,另外还需要配置数据库的连接吧。显然是不可能的。
我觉得可行的方法是WEB服务器和数据可服务器进行交互,WEB服务器取得数据后,然后将数据送到浏览器端。比较典型的方式一个是通过CGI编程,WEB服务器上的CGI进程从数据库取数据,然后HTML的方式发到浏览器端;另一种方式现在也用得很多,那就是使用ASP了。
我个人觉得在Applet访问数据美什么意义,不过还是附上JDBC的实现,下面是一个例子,这里提供的是一个通过JDBC以TCP/IP方式访问ORACLE数据库的例子,包括直接执行SQL语句和调用存储过程两种方式:import java.sql.*;
import java.lang.*;
import java.io.*;public class JDBC_EXAMPLE {
public static void main(String args[]){
Connection connection=null;
Statement dispSTMT=null; //用于装载执行静态的SQL语句
CallableStatement callableSTMT=null;
//可以调用数据库存储过程
ResultSet result; String sQueryStr="";
String sVolLevel=""; //建立数据库连接
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection (
"jdbc:oracle:thin:@10.136.140.156:1521:mis",
"UserName","Password"); //数据库的用户名和口令
//getConnection(String url,String UserName,String UserPassword)
dispSTMT=connection.createStatement();
}catch(Exception e){}
//执行SQL语句并去取得数据集
try {
sQueryStr="select TO_CHAR(SYSDATE) as SD form DUAL";
result=dispSTMT.executeQuery(sQueryStr);
if (result.next())
sVolLevel=result.getString("SD").trim();
}catch(Exception e){}
//执行存储过程并取得数据
try{
callableSTMT=(CallableStatement)con.prepareCall("{call SP_GETDYHGL(?,?,?,?,?,?,?,?)}"); callableSTMT.clearParameters();
String sInParm1,sInParm2,sInParm3,sInParm4;
String sOutParm1,sOutParm2;
float fOutParm3,fOutParm4;
sInParm1 ="Input Parm1";
sInParm2 ="Input Parm2";
sInParm3 ="Input Parm3";
sInParm4 ="Input Parm4"; //输入参数
callableSTMT.setString(1,sInParm1);
callableSTMT.setString(2,sInParm2);
callableSTMT.setString(3,sInParm3);
callableSTMT.setString(4,sInParm4); //注册输出参数
callableSTMT.registerOutParameter(5,Types.VARCHAR);
callableSTMT.registerOutParameter(6,Types.VARCHAR);
callableSTMT.registerOutParameter(7,Types.FLOAT);
callableSTMT.registerOutParameter(8,Types.FLOAT); //执行存储过程
callableSTMT.execute(); //取得输出数据
sOutParm1 =callableSTMT.getString(5);
sOutParm2 =callableSTMT.getString(6);
fOutParm3 =callableSTMT.getFloat(7);
fOutParm4 =callableSTMT.getFloat(8);
}catch(Exception e){}
}
}
解决方案 »
- 继承和组合问题
- 对于java中继承机制应该怎样理解?
- 捆饶新手N长时间的问题
- 请熟悉Swing设计的和多线程和io系统的朋友。请教个很重要的问题
- 请推荐在windows 2000下使用组件:外观象windows XP一样。
- 串口通信:javax.com.api的设置——敬请南来北往的各位给查个错。谢谢!!
- @@@@@applet如何更改本地访问权限??
- 我写了一个每日自动增量备份文件的小程序。大家给点意见。
- 请问用java写的程序,如一个java写的frame如何用jni技术编译成dll.而在windows下运行.
- 请问这里有使用Oracle JDeveloper和Oracle ADF做开发的吗?
- 如何使Applet可以访问本地资源,如:文件,IC卡等??
- 有关对话框?
在APPLET中实现对文件的读写操作,不知老大有什么办法吗?
如果单单是指访问文件系统的话,至少有两种方法实现:
1.通过JAVA提供了文件操作的类,你在Applet也是可以使用的(如果浏览器允许的话),不过一般的浏览器中(如IE,Netscape等)都有安全措施,不允许Applet直接对本地的文件系统进行操作。除非你能像黑客那样,利用Java和浏览器的漏洞。不过如果你不是自己玩玩的话,这种方法肯定不行,因为如果用户浏览器加了针对该漏洞的补丁,你的程序就不能用了,另外,这样是违法的,肯定不能做到卖钱的程序中。对于漏洞,我也不懂。
2.通过JNI(Java本地化方法)方法,你可以实现JNI,然后再Java中调用。但,你的Applet恐怕用这种方法也不行。当然另外有种你可以访问的,就是Cookie文件,但这是非常有限的,对于Cookie,我不懂,所以没什么好说的。