动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.propertyIsEnumerable 属性.
.Java拷贝文件.
.Java不该转换至.Net的五大理由.
.java缺点.
.Eclipse快速上手指南(3).
.一个javaBeans的关于RTTI的问题.
.Struts源码研究-Action-Input属性.
.Google将加入Eclipse?.
.J2ME 2D小游戏入门之周边工具类.
.初学者入门JAVA的XML编程实例解析.
.带你揭开Java clone技术的神秘面.
.JAVA对象转为JavaString的几种常.
.深入剖析java类的构造方式.
.手机开发 教您使用JSR172解析XML.
.EJB Timer Service的高级特性心得.
.two tips about BlackBerry.
.Struts网站动态导航系统设计思路.
.设计和优化MicrosoftWindowsCE.N.
.开发Java系统程序员要注意的基本.
.精通Hibernate之映射继承关系八.

sqlserver 2000h 和 jdbc 的融合问题

发表日期:2008-1-5 |



  sql server 2000 是当今网络编程中使用的比较多的一个数据库系统,而Java则是流行的网络编程语言,在网络编程中涉及的比较多也比较重要的就是数据库问题,java自身提供了对各类主流数据库系统的支持,通过提供java.sql 库,提供了一个统一的接口,使得可以在java环境下不必对程序作大规模的修改,只要更改相应的驱动程序,即可实现对各类数据库的操作,从而提高软件的生存周期和降低软件的开发成本和维护费用,在这种情况下sql server 2000 和java 的融合问题就显得比较重要了,本文简要地阐述一下sql server 2000 和jdk的融合问题。
  
  系统需求
  
  数据库:sql server 2000 sp3
  
  驱动程序:sql server driver for jdbc
  
  java版本:jdk1.2以上
  
  1:我们首先使用jdbc-odbc桥来实现数据库的连接,这个相对简单
  
  首先使用sql server 企业治理其建立一个数据库test,并建立一个简单的表 first_table
  
  建立odbc数据源 ,各步骤采用默认操作即可
  
  编写一个简单的测试程序,该程序主要实现数据库的连接,以及一个简单的sql操作 ,代码如下:
  
  /*********************************************** /* /*DBTest.java /* /******************************************* */ import java.sql.*; public class DbTest {         Connection con;     Statement sta;     ResultSet rs;         String driver;     String url;     String user;     String pwd;     public DbTest()     {       driver = "sun.jdbc.odbc.JdbcOdbcDriver";       url  = "jdbc:odbc:store_manager";       user  = "share";       pwd  = "share";       init();     }     public void init()     {         try{           Class.forName(driver);           System.out.println("driver is ok");           con = DriverManager.getConnection(url,user,pwd);           System.out.println("conection is ok");           sta = con.createStatement();           rs = sta.executeQuery("select * from room");           while(rs.next())           System.out.println(rs.getInt("roomNum"));         }catch(Exception e)         {             e.printStackTrace();         }     }         public static void main(String args [])//自己替换[]     {         new DbTest();     } }
  
  运行结果如下:
  
  driver is ok
  conection is ok
  1001
  1002
  1003
  1004
  1005
  1006
  Press any key to continue...
  
  顺利通过测试
  
  2,我们这次不通过odbc桥来操作数据库,我们采用sql server driver 来实现对sqlserver数据库的操作, 这将是我们这篇文章的重点,因为jdbc-odbc桥是一种常见的操作windows系统数据库的常用方法,但它存在的缺点很多,所以现在很多开发者都侧重于使用sqlserver driver来操作,在这里我们通过一步步的调试,来加深读者对这种连接的理解
  
  在通常的理解下,只要我们装了sqlserver driver for jdbc 我们便可进行数据库编程,事实则不然,首先我们看下边的代码:
  
  /*********************************************** /* /*DbTest.java /* /******************************************* */ import java.sql.*; public class DbTest {         Connection con;     Statement sta;     ResultSet rs;         String driver;     String url;     String user;     String pwd;     public DbTest()     {       driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";;       url  = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName =StoreManager";       user  = "sa";       pwd  = "potsmart10";       init();     }     public void init()     {         try{             Class.forName(driver);             System.out.println("driver is ok");             con = DriverManager.getConnection(url,user,pwd);             System.out.println("conection is ok");           sta = con.createStatement();           rs = sta.executeQuery("select * from room");           while(rs.next())           System.out.println(rs.getInt("roomNum"));         }catch(Exception e)         {             e.printStackTrace();         }     }         public static void main(String args [])//自己替换[]     {         new DbTest();     } }
  
  这段代码跟上变得代码是一样的,差别在于驱动,还有url,这是在使用sqlserver driver for jdbc 中碰到的困惑
  
  按道理讲,上边这段代码应该没错,可首先我们来看一下,假如sqlser服务器没有升级到sp3(在使用jdbc时,假如系统是XP或者2003务必要把sqlserver 升级到sp3,往上到处都有下的),我们看看运行结果
  
  driver is ok
  java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establis
  hing socket.
  at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source
  )
  at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
  at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
  at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
  
  at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Sou
  rce)
  at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown S
  ource)
  at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
  at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
  at java.sql.DriverManager.getConnection(DriverManager.java:523)
  at java.sql.DriverManager.getConnection(DriverManager.java:171)
  at DbTest.init(DbTest.java:32)
  at DbTest.<init>(DbTest.java:25)
  at DbTest.main(DbTest.java:46)
  Press any key to continue...
  
  出现上边错误的主要原因是默认的数据库服务器端口 1433没有打开,无法直接连接 。
  
  假如升级到sp3则这个问题可以结决,我们再来看看升级之后,程序运行的结果
  
  driver is ok
  conection is ok
  java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'room' 无效。
  at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source
  )
  at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
  at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown
  Source)
  at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown
  Source)
  at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(
  Unknown Source)
  at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Sour
  ce)
  at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType
  (Unknown Source)
  at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown
  Source)
  at com.microsoft.jdbc.base.BaseStatement.postImplExecu
  te(Unknown Source)
  
  at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
  at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown So
  urce)
  at com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source)
  at DbTest.init(DbTest.java:35)
  at DbTest.<init>(DbTest.java:25)
  at DbTest.main(DbTest.java:46)
  Press any key to continue...
  
  在这儿,用户已经登陆上去,但是却不能访问里边的数据表,出现这个问题的原因在于sa用户为系统用户
  
  它虽然能够登陆数据库,但是storeManager数据库里边却没有这个用户的访问权限,所以,我们现在为这个数据库重新建立一个用户share ,建立过程如下:在storeManager数据库中选重用户 ---〉新建用户 -- 〉名称选择(这一步中有两个要害点 1:身份验证选sql身份验证,默认数据库选StoreManager)-〉建立新教色share ,此时更改程序,将用户登陆名和密码修改一下,重新运行程序
  
  driver is ok
  conection is ok
  1001
  1002
  1003
  1004
  1005
  1006
  Press any k
上一篇:如何给 Log4j 配上数据库连接池 人气:384
下一篇:教你用JAVA ID生成器去生成逻辑主键 人气:686
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-29 oblog v4.6 build 20080827
2008-8-29 ASBLOG v2.5 bulid 080828
2008-8-29 时尚DJ舞曲小偷 v3.1
2008-8-29 仿代码信息分类系统 v1.0 Beta3
2008-8-29 浮梦呓语-个人网站 完整版
2008-8-29 多用户QQ空间Flash播放器
2008-8-29 美思卡企业网站管理系统高级版
2008-8-28 LDV个人相册系统 v1.6.1
2008-8-28 讯时网站管理系统CMS v3.5
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵