仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 487|回复: 11
打印 上一主题 下一主题

[学习教程] JAVA网页编程之sqlserver 2000h 和 jdbc 的交融成绩

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:22:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在性能方面,在windows平台下,.net可能是占强项,要是把.net放在sun开发的操作系统上去运行呢?根本就运行不了,.net对其它操作系统的支持也很弱,性能也可能比不上java。server|sqlserver|成绩sqlserver2000是现今收集编程中利用的对照多的一个数据库体系,而java则是盛行的收集编程言语,在收集编程中触及的对照多也对照主要的就是数据库成绩,java本身供应了对各种支流数据库体系的撑持,经由过程供应java.sql库,供应了一个一致的接口,使得能够在java情况下不用对程序作年夜范围的修正,只需变动响应的驱动程序,便可完成对各种数据库的操纵,从而进步软件的保存周期和下降软件的开辟本钱和保护用度,在这类情形下sqlserver2000和java的交融成绩就显得对照主要了,本文扼要地论述一下sqlserver2000和jdk的交融成绩。


体系需求:
数据库:sqlserver2000sp3
驱动程序:sqlserverdriverforjdbc
java版本:jdk1.2以上

1:我们起首利用jdbc-odbc桥来完成数据库的毗连,这个绝对复杂
起首利用sqlserver企业办理其创建一个数据库test,并创建一个复杂的表first_table
创建odbc数据源,各步骤接纳默许操纵便可

编写一个复杂的测试程序,该程序次要完成数据库的毗连,和一个复杂的sql操纵,代码以下:
/***********************************************
/*
/*DbTest.java
/*
/********************************************/

importjava.sql.*;

publicclassDbTest{

Connectioncon;
Statementsta;
ResultSetrs;

Stringdriver;
Stringurl;
Stringuser;
Stringpwd;
publicDbTest()
{
driver="sun.jdbc.odbc.JdbcOdbcDriver";
url="jdbc:odbc:store_manager";
user="share";
pwd="share";
init();
}
publicvoidinit()
{
try{
Class.forName(driver);
System.out.println("driverisok");
con=DriverManager.getConnection(url,user,pwd);
System.out.println("conectionisok");
sta=con.createStatement();
rs=sta.executeQuery("select*fromroom");
while(rs.next())
System.out.println(rs.getInt("roomNum"));
}catch(Exceptione)
{
e.printStackTrace();
}
}

publicstaticvoidmain(Stringargs[])//本人交换[]
{
newDbTest();
}
}


运转了局以下:

driverisok
conectionisok
1001
1002
1003
1004
1005
1006
Pressanykeytocontinue...


顺遂经由过程测试


2,我们此次欠亨过odbc桥来操纵数据库,我们接纳sqlserverdriver来完成对sqlserver数据库的操纵,这将是我们这篇文章的重点,由于jdbc-odbc桥是一种罕见的操纵windows体系数据库的经常使用办法,但它存在的弱点良多,以是如今良多开辟者都偏重于利用sqlserverdriver来操纵,在这里我们经由过程一步步的调试,来加深读者对这类毗连的了解

在一般的了解下,只需我们装了sqlserverdriverforjdbc我们即可举行数据库编程,现实则否则,起首我们看下边的代码:
/***********************************************
/*
/*DbTest.java
/*
/********************************************/

importjava.sql.*;

publicclassDbTest{

Connectioncon;
Statementsta;
ResultSetrs;

Stringdriver;
Stringurl;
Stringuser;
Stringpwd;
publicDbTest()
{
driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";;
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=StoreManager";
user="sa";
pwd="potsmart10";
init();
}
publicvoidinit()
{
try{
Class.forName(driver);
System.out.println("driverisok");
con=DriverManager.getConnection(url,user,pwd);
System.out.println("conectionisok");
sta=con.createStatement();
rs=sta.executeQuery("select*fromroom");
while(rs.next())
System.out.println(rs.getInt("roomNum"));
}catch(Exceptione)
{
e.printStackTrace();
}
}

publicstaticvoidmain(Stringargs[])//本人交换[]
{
newDbTest();
}
}


这段代码跟上变得代码是一样的,不同在于驱动,另有url,这是在利用sqlserverdriverforjdbc中碰到的狐疑

按事理讲,上边这段代码应当没错,可起首我们来看一下,假如sqlser服务器没有晋级到sp3(在利用jdbc时,假如体系是xp大概2003务需要把sqlserver晋级到sp3,往上各处都有下的),我们看看运转了局

driverisok
java.sql.SQLException:[Microsoft][SQLServer2000DriverforJDBC]Errorestablis
hingsocket.
atcom.microsoft.jdbc.base.BaseExceptions.createException(UnknownSource
)
atcom.microsoft.jdbc.base.BaseExceptions.getException(UnknownSource)
atcom.microsoft.jdbc.base.BaseExceptions.getException(UnknownSource)
atcom.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(UnknownSource)

atcom.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(UnknownSou
rce)
atcom.microsoft.jdbc.base.BaseConnection.getNewImplConnection(UnknownS
ource)
atcom.microsoft.jdbc.base.BaseConnection.open(UnknownSource)
atcom.microsoft.jdbc.base.BaseDriver.connect(UnknownSource)
atjava.sql.DriverManager.getConnection(DriverManager.java:523)
atjava.sql.DriverManager.getConnection(DriverManager.java:171)
atDbTest.init(DbTest.java:32)
atDbTest.<init>(DbTest.java:25)
atDbTest.main(DbTest.java:46)
Pressanykeytocontinue...

呈现上边毛病的次要缘故原由是默许的数据库服务器端口1433没有翻开,没法间接毗连。


假如晋级到sp3则这个成绩能够结决,我们再来看看晋级以后,程序运转的了局


driverisok
conectionisok
java.sql.SQLException:[Microsoft][SQLServer2000DriverforJDBC][SQLServer]对
象名room有效。
atcom.microsoft.jdbc.base.BaseExceptions.createException(UnknownSource
)
atcom.microsoft.jdbc.base.BaseExceptions.getException(UnknownSource)
atcom.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown
Source)
atcom.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown
Source)
atcom.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(
UnknownSource)
atcom.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(UnknownSour
ce)
atcom.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType
(UnknownSource)
atcom.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown
Source)
atcom.microsoft.jdbc.base.BaseStatement.postImplExecu
te(UnknownSource)

atcom.microsoft.jdbc.base.BaseStatement.commonExecute(UnknownSource)
atcom.microsoft.jdbc.base.BaseStatement.executeQueryInternal(UnknownSo
urce)
atcom.microsoft.jdbc.base.BaseStatement.executeQuery(UnknownSource)
atDbTest.init(DbTest.java:35)
atDbTest.<init>(DbTest.java:25)
atDbTest.main(DbTest.java:46)
Pressanykeytocontinue...

在这儿,用户已上岸上往,可是却不克不及会见里边的数据表,呈现这个成绩的缘故原由在于sa用户为体系用户
它固然可以上岸数据库,可是storeManager数据库里边却没有这个用户的会见权限,以是,我们如今为这个数据库从头创建一个用户
share,创建历程以下:在storeManager数据库当选重用户---〉新建用户--〉称号选择(这一步中有两个关头点1:身份考证选sql身份考证,默许数据库选StoreManager)-〉创建新教色share,此时变动程序,将用户上岸名和暗码修正一下,从头运转程序

driverisok
conectionisok
1001
1002
1003
1004
1005
1006
Pressanykeytocontinue...

此次顺遂经由过程测试



总结:sqlserve和jdbc的交融成绩,关头触及到sp3补钉(端口开放)另有用户成绩,办理这两个成绩以后,残剩的即是sqlserver操纵成绩了,另有一点在远程操纵的时分,要把sqlserver组设置一下,在平安性里边亦将身份考证变动为sqlserve考证便可


JAVA学习必须明确这是一项投资,对于大多数的人来说,学习JAVA是为了就业,还有就是刚走向工作位置的朋友想尽快赶上工作的节奏。
柔情似水 该用户已被删除
沙发
发表于 2015-1-20 22:01:53 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
小女巫 该用户已被删除
板凳
发表于 2015-1-27 12:35:16 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
爱飞 该用户已被删除
地板
发表于 2015-2-5 05:13:48 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
第二个灵魂 该用户已被删除
5#
发表于 2015-2-5 21:19:25 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
小魔女 该用户已被删除
6#
发表于 2015-2-7 13:39:25 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
灵魂腐蚀 该用户已被删除
7#
发表于 2015-2-8 15:34:34 | 只看该作者
是一种突破用户端机器环境和CPU
乐观 该用户已被删除
8#
发表于 2015-2-17 13:58:56 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
山那边是海 该用户已被删除
9#
发表于 2015-3-5 19:38:22 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
莫相离 该用户已被删除
10#
发表于 2015-3-12 12:13:20 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
蒙在股里 该用户已被删除
11#
发表于 2015-3-19 22:05:08 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
谁可相欹 该用户已被删除
12#
发表于 2015-4-3 22:44:04 | 只看该作者
是一种使用者不需花费很多时间学习的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 16:57

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表