老板要我在APPLET中访问SqlServer7.0

guochuanxi 2001-04-24 04:15:00
各位兄弟,十万火急,老板要我将C/S结构的程序改为B/S,可在网页中的APPLET怎么也访问不了SQLSERVER7。0数据库!JSP不会用。ASP懂一些,可也不知道APPLET如何同ASP交互。如果要在IE中数字签名,必须要用MS的工具来签名,我也不会。请问各位兄弟姐妹,有何良策?
...全文
99 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zytang 2001-08-17
  • 打赏
  • 举报
回复
"JDS"
哪里可以下载
hp1200 2001-07-29
  • 打赏
  • 举报
回复
up
kidcat 2001-04-25
  • 打赏
  • 举报
回复
真要直接在applet中访问数据库的话还要找个for SQLSERVER7.0的jdbc驱动程序
BALLQQ 2001-04-25
  • 打赏
  • 举报
回复
我是转载:http://jerry51.51.net/bbs/

学习任何的程序语言,当然都得与数据库,Java刚刚诞生的时候,对数据库的支持并不是很好,经过这几年的发展,它对数据库的支持也已经完全达到了成熟的境地。由于这里主要是介绍Java Applet小程序, 因此,不可能用大的篇幅去给大家介绍数据库的知识了,怎么样去建立与设计数据库,还是请大家自己找点书看看吧!这儿,对不住了。

我们这儿以Microsoft Access数据库为例子来说明怎么实现一个数据库的打开与读取的知识。

第一步:
使用Microsoft Access创建一个数据库,也就是我的这个例子要用到的,内容就随便了。

第二步:也就是编程序了。

1)定义变量,变量的定义如下:

TextArea theVisits=new TextArea (6,80);
//显示数据库的内容
TextField theStatus=new TextField ("",80);
//显示打开数据库的信息。相当于程序的状态栏
Connection theConnection; //数据库的连接方法
Statement theStatement; //代表一个发送到数据库来执行的数据库命令
ResultSet theResult; //读取的数据结果,也就是数据库返回的结果
ResultSetMetaData theMetaData;
//包含了有关数据库命令执行后 返回结果的有用信息。
String theDataSource; //包含了被访问数据库或者数据源的名称,用URL形式表示 .
String theUser; //数据库的用户名
String thePassword; //数据库的密码
2)实现界面,可以用开始时给大家介绍的方法来实现,界面的实现相对来说,

比较的简单了,如下:

public void init()
{
add(theVisits);
add(theStatus);
theVisits.setEditable (false); //设置文本区域不可以被用户写入
theStatus.setEditable (false); //设置文本区域不可以被用户写入
openConnection(); //打开数据库的连接
execSqlCommand("select * from MyTable"); //从数据库中读取内容
closeConnection(); //关闭已经打开的数据库
}
3)打开某个数据库的连接

public void openConnection()
{
theDataSource="jdbc:odbc:MyAccess";
theUser="";
thePassword="";
try
{
Class.forName("Sun.jdbc.odbc.JdbcOdbcDriver");
theConnection=DriverManager.getConnection(theDataSource,theUser,thePassword);
theStatus.setText("Status:OK");
}
catch (Exception e)
{
handleException(e);
}
}

包含数据源名称的字符串格式为一个特殊的语句:

jdbc:<subpotocol>:<subname>

协议 名jdbc必须提供,子协议和子名称根据使用数据源类型而变化。
JDBC DriverManager使用子协议来选择书记源响应的驱动程序。子协议
的通常值为“odbc”和“oracle“,子名称包含了该驱动程序使用的附加
信息。通常情况,该子名称是某个网络名称,例如,用于其它Web服务:

jdba:<subpotocol>://<host.domin><port>/<databasename>

驱动程序的说明应该指定子协议和子名称的正确形式。使用ODBC时,主机
和端口信息没有必要提供,因为数据源总是配置在本地主机上。用于ODBC数据源的形式是

jdbc:odbc:<data source name>

为了打开数据库连接,用户必须使用具体的驱动程序另外,驱动程序应该指
定如何这样做。如果正在使用JDBC-ODBC桥程序,那么可以通过使用名为Class类
的forName()方法来使用具体的JDBC-ODBC桥驱动程序。

class.forName("sun.jdbc.JdbcOdbcDriver");

然后,拥护可以告诉rManager打开数据源的连接,使用下列方法:

theConnection=DriverManager.getConnection(theDataSource,theUser,thePassword);

getConnection()方法返回一个Connection对象,用户应该保存这个对象,
因为它是访问数据源的方法。这里,该对象保存到名为theConnection的字段中。

如果在打开连接过程中出现错误,则SQLexception作废,通过在try-catch
块内打开连接的语句,拥护可以处理这种异常。通过使用后面要讲的handleException(),
在TextField内显示一个简短的相应信息。

4)执行SQL命令

public void execSQLCommand(String command)
{
try{
theStatement=theConnection.createStatement();
theResult=theStatement.executeQuery (command);
theMetaData=theResult.getMetaData ();
int columnCount=theMetaData.getColumnCount ();
theVisits.setText("");
while(theResult.next ())
{
for(int i =1;i<=columnCount;i++)
{
String colValue=theResult.getString(i);
if(colValue==null)colValue="";
theVisits.append (colValue+";");
}
theVisits.append ("\n");
}
}catch(Exception e)
{
handleException(e);
}
}
为了执行该命令,程序使用Connection对象的createStatement()方法创建
一个可以有查询的Statement。然后,它激活Statement对象的executiveQuery()
方法,用来传递包含SQL查询语句的字符串。从init()中传送过来的参数——
Slect * from MyTable是一个简单的数据库查询语言,如果你还不知道什么意思,
那么请你还是查看一本有关数据库的书吧,这些内容很多,不是我这儿一下子能说
清楚的了。它的意思简单的说,就是查找表——MyTable中的所有(*)信息。它会
返回数据库中的所有内容,并把它作为ResultSet访问的结果。接着该程序激活ResultSet
对象的getMetaData()方法。这时,返回一个ResultSetMetaData值,该值存储在
一个称为theMetaData的变量中。使用ResultSetMetaData对象,可以获得很多有用的
数据;这里该程序使用getColumnCount()方法获得结果表中列的数量。最后,该程序反
复使用该结果表,激活theResult的next()方法获得结果表中的每一条记录,只到该方法
使用完全部记录返回flase为止。

5)关闭数据库连接

public void closeConnection()
{
try{
theConnection.close ();
}
catch(Exception e)
{
handleException(e);
}
}
当用户访问完某个数据库时,应该关闭数据库连接,释放与连接有关的资源。用户创建
的任何打开的ResultSet或者Statement对象将 自动关闭。另外,在关闭连接时可能发
生一个SQLException,也放到后面处理。

6)处理异常和错误

public void handleException(Exception e)
{
theStatus.setText("Error:"+e.getMessage ());
e.printStackTrace ();
if(e instanceof SQLException)
{
while((e=((SQLException)e).getNextException ())!=null)
{
System.out.println(e);
}
}
}
handleException()方法用来处理以上的错误和异常。该方法设置状态TextField包含与
异常有关的错误消息,使用getMessage()方法获得该消息。它还可以在System.out打印
堆栈轨迹。

三 安装ODBC数据源

为了运行这个应用程序,用户必须 首先创建一个与MyTable数据库相对应的 ODBC数据源。
为了通过ODBC使用Access,用户必须安装Access Odbc驱动程序。如果用户没有安装该驱动
程序,那么还是先安装吧,什么,不会,不会也不行了,找一本书好好看看吧,这是肯定要
看的。我这儿简单的给你说一下吧:

1.从控制面板中选择ODBC-32,双击(要是没有这个图标,那我真的没有办法了,它在安装
数据库的时候,应该会安装上的,否则就只能找一张数据库系统的安装盘,找到ODBC驱动程
序进行安装)。

2.单击添加,选择Microsoft Access Driver。(如果这个图标也没有,那么你的机器是严
重缺乏营养,赶紧装数据库必须的软件,先装Access,这儿要用)

3.输入你要使用的数据源的名称(如果没有,那就得先创建,我这儿就不说Access的使用方
法了)。描述就随便你了。

4.单击选择按钮选择你已经创建好了的Access数据库的文件。

5.点确定就可以了。如果你想为你数据库保密的话,可以加上用户名和密码。(在高级选项里面)。

要说明一点的是,如果你用VJ++编辑的此程序,要是运行不了,那就是数据库的连接没有设
置好,怎么将数据库设计好,以后再说吧。另外,VJ++有它自己的数据库驱动程序。很适合与
VJ++一起使用,可惜介绍这方面的书好象不是很多。
anggogo 2001-04-25
  • 打赏
  • 举报
回复
不好,建议使用JDS。
ODBC桥没有BORLAND出的那个好
zoukaix 2001-04-25
  • 打赏
  • 举报
回复
很好!
hhutuchong 2001-04-24
  • 打赏
  • 举报
回复
如果用JDBC,一般的书上都有介绍的,你可以参考一些资料
lqqchen 2001-04-24
  • 打赏
  • 举报
回复
楼上大虾差矣。
回guochuanxi:java访问数据库是十分容易的。而且在applet或者servlet里面实现都相当容易。
建议你去找些书看看JAvA数据库编程那章节,学习一下JDBC,结构是很清晰的。数据库访问的代码写在applet客户段也许执行速度不够理想,你可以做在servlet里面,然后用HTML或者applet获得返回结果。
那么就再看看servlet那一章节
anggogo 2001-04-24
  • 打赏
  • 举报
回复
FAINT,关那些什么事.
你用servlet和applet通信的方法,用applet去调用servlet还不是一样实现.
java 实现连接sql server 20002007-12-16 13:28:00.0 第一种:通过ODBC连接数据库 JAVA语言的跨平台的工作能力(Write Once ,Run Anywhere)、优秀的图像处理能力(我相信现在没有那种语言可以超过JAVA在网络上的图形处理能力)、网络通信功能、通过JDBC数据库访问技术等等,让我们谁都不可否认JAVA语言是SUN公司对于计算机界的一个巨大的贡献。笔者可以描述这样一个场景:有一天你上网完全可以不用IE 或者NETSCAPE,上网就像是玩游戏,你可以获得游戏那么精美的图像和互动的感觉,如果你玩过UO,也许你就知道那种感觉了,但是JAVA做成的东西一定会超过UO的,因为不单单是游戏,也不是单单是浏览器,如果你愿意(要你有钱,有时间,有优秀的JAVA人才)你可以把所有的这一切用Java完全集成出来!!!我不是夸大JAVA的功能,大家可以访问一下http://www.simchina.net的那个社区程序,你就能找到一种感觉了:相信我没有说什么假话 。好了,不说废话了,现在我向你介绍JAVA的数据库访问技术----JDBC数据库访问技术(你可千万不要搞成ODBC了哟!)。 JDBC技术事实上是一种能通过JAVA语言访问任何结构化数据库的应用程序接口(API)(Sun这样说的,我也不知道是不是真的),而且现在的JDBC 3.0据Sun说也能访问Execel等电子表格程序! JDBC对于数据库的访问有四种方式,我们这里只是介绍两种: 第一种是通过ODBC做为“桥”(Bridge)对数据库访问,第二种是直接对数据库访问。 我们先来看看第一种JDBC<-->ODBC访问的流程: JDBC Driver Mannager->JDBC<->ODBC桥->ODBC->数据库客户机驱动库->数据库服务器->返回查询结果,在这种访问值的我们注意的是虽然JAVA是"Write Once ,Run Anywhere",但是如果通过这种访问的话,需要客户端必须设置ODBC和有相应的数据库客户机的驱动,当你看了下面的另外一个流程的时候或许你会想:明明下一种更方面,为什么还要有这个东西的产生!呵呵,因为,未必所有的数据库服务器提供商都提供下面的JDBC驱动程序(给JDBC访问提供相应的接口),所以就有了JDBC<->ODBC Bridge。 接着再让我们来看看第二种访问流程: JDBC Driver Mannager->局部JDBC驱动->客户端数据库->数据库服务器->返回查询结果,这种访问事实上是转换JDBC调用为相应的数据库(Oracle, Sybase, Informix, DB2, 和其他的数据库数据库管理系统)的客户端API调用(这么说,不知道大家能不能懂,说简单点就好像ASP不是通过DSN对数据库访问而是通过OLEDB访问,说道这里我还是不知道大家能不能明白我的意思。哎呀,不要扔鸡蛋嘛!),这种方式的访问需要相应的数据库提供商提供相应的JDBC驱动程序,但是有一种好处,可以独立于odbc用于可以随处可Run的客户端的浏览器Applet程序。 我们下面将给大家一个通过JDBC-ODBC桥数据库访问的实例,但是在看下面的事例前我想问大家一次:JDK1.3装了吗?数据库驱动装了吗(我使用的是SQLserver)?你该没有使用Linux吧?虽然java支持Linux,但是老兄我可没有使用Linux哟(这同JAVA的Write Once ,Run Anywhere没有关系),由于使用了运行于Win下面的ODBC,我建议你看看这篇东西http://www.aspcn.com/showarticle.asp?id=112,否则你要是有了问题,出不了结果那岂不是要怪我(不过欲加之罪,何患无吃... ...),冤枉呀! 哎呀,说了这么多的废话,还是让我们来看看到底JDBC的调用吧!既然我们是通过odbc访问数据库,所以这个odbc是跑不了的,我们先来设置你的odbc:打开你的odbc数据源->选择系统dsn(Click加新的dsn-)->接下来输入选择数据库类型、输入dsn名:、选择服务器、连接数据库的方式、输入数据库的登陆用户和密码->测试连接,如果测试成功的话,那么你的dsn就建立好了,我的dsn名为Sqlserver.使用的是sqlserver7.0,以 “sa”登陆,密码为空。这些东西都是后面要用道的! 好了下面让我们来看程序代码: (该代码已经通过运行) //########################################################### //代码开始 //########################################################### import java.sql.*; //加载java数据连接包,java基本所有的数据库的调用的都在这个东西里面 public class InsertCoffees { public static void main(String args[]) { String url = "jdbc:odbc:sqlserver"; //取得连接的url名,注意sqlserver是dsn名 Connection con; //实例化一个Connection对象 Statement stmt; String query = "select * from col_link"; //选择所有的Col_link表的数据输出 try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载jdbc-odbc桥驱动 } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); //加载jdbc-odbc桥错误 System.err.println(e.getMessage()); //其他错误 } try { con = DriverManager.getConnection(url, "sa", ""); //数据库连接 stmt = con.createStatement(); //Create 一个声明 stmt.executeUpdate("CREATE TABLE col_link (sitename varchar (20) NULL ,siteurl varchar (50) NULL) "); //执行了一个sql语句生成了一个表col_link的表 stmt.executeUpdate("insert into col_link values('ASP华网','http://www.aspcn.com')"); stmt.executeUpdate("insert into col_link values('永远到底有多远','http://xuankong.com')"); //执行一个insert into语句 stmt.executeUpdate("update col_link set siteurl='http://www.aspcn.com/xuankong/xuankongt.jpg' where siteurl='http://xuankong.com'"); //执行一个update语句,更新数据库 ResultSet rs = stmt.executeQuery(query); //返回一个结果集 System.out.println("Col_link表的数据如下(原始数据)"); //下面的语句使用了一个while循环打印出了col_link表的所有的数据 System.out.println("站点名 "+" "+"站点地址"); System.out.println("---------------"+" "+"----------------"); while (rs.next()) { String s = rs.getString("sitename"); String f = rs.getString("siteurl"); //取得数据库的数据 System.out.println(s + " " + f); /*String t = rs.getString(1); String l = rs.getString(2); System.out.println(t + " " + l);*/ /*jdbc提供了两种方法识别字段,一种是使用getXXX(注意这里的getXXX表示取不同类型字段的不同的方法)获得字段名, 第二种*是通过字段索引,在这里我把第二种方法注释了*/ /*你可以访问这个连接获得getxxx的用法:http://java.sun.com/docs/books/tutorial/jdbc/basics/_retrievingTable.html*/ } stmt.close(); con.close(); //上面的语句关闭声明和连接 } catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); //显示数据库连接错误或者查询错误 } } } //########################################################### //代码结束 //########################################################### 在上面这个程序我想你展示了如何使用JDBC-ODBC连接数据库,使用SQL语句生成一个表,使用SELECT、INSERT 、UPDATE语句取的、插入和更新一个表的数据,如何通过字段名和字段索引访问数据库的东东!我希望你能从上面的代码真正的学习到一些东西! 发挥你的想象力,设想一下JAVA到底,比如说可以通过数据库做一个不需要GUI(图形用户界面)的聊天室,呵呵,感觉起来就像在DOS环境下打字的聊天室!哈哈! 最后需要说的是笔者的调试上面程序的环境:WIN2000 , JDK1.3,MS SQLSERVER编辑软件:EDITPLUS 2.01a(这最后的东西可不是废话,虽然早就了一些专业的JAVA开发工具,但是笔者建议JAVA初学者使用文本软件开发JAVA程序) 第二种:直接用jdbc访问数据库 (1) 该实例已经运行通过 jsp连接Sql Server7.0/2000数据库 testsqlserver.jsp如下: <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; //pubs为你的数据库的 String user="sa"; String password=""; Connection conn= DriverManager.getConnection(url,user,password); Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String sql="select * from test"; ResultSet rs=stmt.executeQuery(sql); while(rs.next()) {%> 您的第一个字段内容为:<%=rs.getString(1);%> 您的第二个字段内容为:<%=rs.getString(2);%> <%}%> <%out.print("数据库操作成功,恭喜你");%> <%rs.close(); stmt.close(); conn.close(); %> (2)java访问sqlserver服务器 第一步:安装jdbc 点击SQL Server for JDBC驱动程序安装程序setup.exe(可以到微软网站下载 http://msdn.microsoft.com/library/default.asp?rul=/downloads/list/sqlserver.asp下载) 第二步:设置系统变量classpath 假设SQL Server for JDBC 驱动程序安装在d:\jdbc\,则classpath应该设置如下: classpath:=.;…;d:\jdbc\lib; d:\jdbc\lib\mssqlserver.jar; d:\jdbc\lib\msutil.jar; d:\jdbc\lib\msbase.jar; 注意:设置时要在最前面的点号和分号 第三步:编辑java程序并且运行 实例1如下: //import com.microsoft.*; //注意:在java与sql server 连接时不需要这个包,其他书上说这个包是必需的,这个问题有待进一步讨论 import java.sql.*; import java.net.URL; class insert { public static void main(String[] args) { String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=northwind"; String query="select * from categories"; String query1="insert categories values(10,'Hanbao','Sweet')"; String query2="insert categories values(11,'Naicha','Coffee taste')"; try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Connection con=DriverManager.getConnection(url,"sa","739555"); Statement stmt=con.createStatement(); stmt.executeUpdate(query1); stmt.executeUpdate(query2); stmt.close(); con.close(); } catch(SQLException ex) { } catch(java.lang.Exception ex) { ex.printStackTrace(); } } } 实例2如下: //import com.microsoft.*; //注意:在java与sql server 连接时不需要这个包,其他书上说这个包是必需的,这个问题有待进一步讨论 import java.sql.*; import java.net.URL; class java2sqlserver { public static void main(String[] args) { String url="jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=739555;DatabaseName=northwind"; String query="Select * From Categories"; try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //DriverManager.setLogStream(System.out); Connection con=DriverManager.getConnection(url); checkForWarning(con.getWarnings()); Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery(query); dispResultSet(rs); rs.close(); stmt.close(); con.close(); } catch(SQLException ex) { System.out.println(ex.toString()+"----SQLException caught----"); while(ex!=null) { System.out.print("SQLState:"+ex.getSQLState()); System.out.print("Message:"+ex.getMessage()); System.out.print("Vendor:"+ex.getErrorCode()); ex=ex.getNextException(); System.out.println(""); } } catch(java.lang.Exception ex) { ex.printStackTrace(); } } private static boolean checkForWarning(SQLWarning warn) { boolean rc=false; if(warn!=null) { System.out.println("----Warning----"); rc=true; while(warn!=null) { System.out.print("SQLState:"+warn.getSQLState()); System.out.print("Message:"+warn.getMessage()); System.out.print("Vendor:"+warn.getErrorCode()); System.out.println(""); warn=warn.getNextWarning(); } } return rc; } private static void dispResultSet(ResultSet rs) throws SQLException { int i; ResultSetMetaData rsmd=rs.getMetaData(); int numCols=rsmd.getColumnCount(); for(i=1;i<=numCols;i++) { if(i>1) System.out.print(", "); System.out.print(rsmd.getColumnLabel(i)); } System.out.println(""); boolean more=rs.next(); while(more) { for(i=1;i

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧